运行时go test,输出:
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请求,以确保在数据库中创建了数据。
GET
POST
谁能帮助我确保测试按顺序运行?那是POST请求在GET请求之前运行?
您不能/不应该依赖测试执行顺序。没有定义测试的执行顺序,并且使用测试标志可以排除测试的运行,因此您无法保证它们将完全运行。
例如,以下命令将仅运行名称包含'W'字母的测试:
'W'
go test -run W
还要注意,如果某些测试函数使用该T.Parallel()方法将自己标记为可以并行执行,则go工具将对测试重新排序以首先运行非并行测试,然后在某些情况下(由测试标记控制-p)并行运行并行测试。
T.Parallel()
-p
测试应相互 独立 。如果一个测试功能具有先决条件,则不能在另一个测试功能中完成/实现。
在运行测试功能之前执行其他任务的选项:
init()
_test.go
TestMain()
M.Run()
在包你的情况init()或TestMain()你应该检查,如果你的数据库初始化(有插入的测试记录),如果没有,将测试记录。
请注意,从Go 1.7开始,您可以使用子测试,在其中定义子测试的执行顺序。有关详细信息,请参阅博客文章:使用子测试和子基准,以及软件包的软件包文档testing。
testing