文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何顺序运行 golang 测试?

2024-04-04 23:29

关注

学习Golang要努力,但是不要急!今天的这篇文章《如何顺序运行 golang 测试?》将会介绍到等等知识点,如果你想深入学习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 请求之前运行?


解决方案


您不能/不应该依赖测试执行顺序。测试执行的顺序未定义,并且使用 testing flags 可以将测试排除在运行之外,因此您无法保证它们会运行。

例如,以下命令将仅运行名称包含 'w' 字母的测试:

go test -run w

另请注意,如果某些测试函数使用 T.Parallel() 方法标记自己符合并行执行条件,则 go 工具会将测试重新排序,先运行非并行测试,然后在某些情况下并行运行并行测试(由 test 控制)像 -p 这样的标志)。您可以在此答案中查看相关示例:Are tests executed in parallel in Go or one by one?

测试应该彼此独立。如果测试函数有先决条件,则无法在另一个测试函数中完成/实现。

在运行测试函数之前执行其他任务的选项:

在您的包 init()testmain() 中,您应该检查您的数据库是否已初始化(插入了测试记录),如果没有,请插入测试记录。

请注意,从 go 1.7 开始,您可以使用定义子测试执行顺序的子测试。有关详细信息,请参阅博客文章:Using Subtests and Sub-benchmarks 和 testing 包的包文档。

对于那些像我一样由于同时运行多个并发测试而遇到问题的人。我找到了一种限制并行运行测试的最大数量的方法:

go test -p 1

这样,您的测试将按顺序一项一项地运行。

Source

到这里,我们也就讲完了《如何顺序运行 golang 测试?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注编程网公众号,带你了解更多关于的知识点!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯