如何依次运行golang测试?
运行时go test
,输出:
--- FAIL: TestGETSearchSuccess (0.00s) Location: drivers_api_test.go:283
Error: Not equal: 200 (expected)
!= 204 (actual)
--- FAIL: TestGETCOSearchSuccess (0.00s)
Location: drivers_api_test.go:391
Error: Not equal: 200 (expected)
!= 204 (actual)
但是,当我go test
再次运行后,所有测试都通过了。
仅当我重置mysql数据库然后go test
首次运行时,测试才会失败。
对于每个GET
请求,我都会做一个POST
请求,以确保在数据库中创建了数据。
谁能帮助我确保测试按顺序运行?那是POST
请求在GET
请求之前运行?
回答:
您不能/不应该依赖测试执行顺序。没有定义测试的执行顺序,并且使用测试标志可以排除测试的运行,因此您无法保证它们将完全运行。
例如,以下命令将仅运行名称包含'W'
字母的测试:
go test -run W
还要注意,如果某些测试函数使用该T.Parallel()
方法将自己标记为可以并行执行,则go工具将对测试重新排序以首先运行非并行测试,然后在某些情况下(由测试标记控制-p
)并行运行并行测试。
测试应相互 独立 。如果一个测试功能具有先决条件,则不能在另一个测试功能中完成/实现。
- 您可以将其放在测试功能本身中
- 您可以将其放在文件本身的包
init()
函数中_test.go
。这将在执行测试功能之前运行一次。 - 您可以选择实现一个
TestMain()
函数,该函数将首先被调用,并且在其中您可以在调用M.Run()
触发测试功能的执行之前进行其他设置。 - 您可以混合使用以上选项。
在包你的情况init()
或TestMain()
你应该检查,如果你的数据库初始化(有插入的测试记录),如果没有,将测试记录。
请注意,从Go
1.7开始,您可以使用子测试,在其中定义子测试的执行顺序。有关详细信息,请参阅博客文章:使用子测试和子基准,以及软件包的软件包文档testing
。
以上是 如何依次运行golang测试? 的全部内容, 来源链接: utcz.com/qa/407311.html