当前位置: 首页 > 面试题库 >

如何依次运行golang测试?

罗伟兆
2023-03-14
问题内容

运行时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



 类似资料:
  • 问题内容: 在如下代码段中: 在任务中,我要运行,完成后再运行,然后再执行其他操作。但我无法弄清楚。这件作品不起作用。请指教。 问题答案: 它不是一个正式版本,但是即将推出的Gulp 4.0使您可以轻松地使用gulp.series进行同步任务。您可以像这样简单地做到这一点:

  • 我目前有一个cucumber的考试数量,它们都在一个特定的标签下,以便这些特定的可以再次运行,一旦我对我的更改感到满意,它们就会被更改为更通用的,它们作为CI套件的一部分运行等。 我当前用于运行该组测试的命令是: 我可以在这个命令中添加什么,以使这些特定的测试在循环中运行?i、 e.我想在这个标签下运行这些特定的测试,比如20次(而不是每次都要等待完成并手动输入命令)。 我试着四处寻找一些例子,但

  • 问题内容: 我正在编写一个新的Jenkins管道,并具有一组最终要并行运行的步骤。但是,在开发此管道时,我想强制其顺序运行。我没有看到任何指定并行步骤使用的线程数或类似方法的方法。这是到目前为止的基本代码: 我希望能够依次运行这些Shell脚本而无需更改很多代码。 问题答案: 而不是您可以这样使用:

  • 问题内容: 我正在尝试通过使用以下代码来检测我的应用程序之前是否已运行: (这是我的默认Android活动) 当我第一次运行该应用程序时,它表示是第一次,当我第二次,第一次,第三次,第一次运行时…。 我使用的是实际的Android设备,而并非每次都使用运行按钮。我使用Eclipse运行按钮运行该应用程序一次,然后关闭该应用程序并在手机上按其图标。 我的代码有问题吗? 问题答案: 更像是在状态之间进

  • 问题内容: 当终端/控制台测试运行以红色或绿色文本显示其输出时,我喜欢它。似乎很多可用于Go的测试库都具有此功能。但是,我只想使用Go随附的默认测试包。有没有一种方法可以用红色和绿色对输出进行着色? 问题答案: 您可以为此创建包装外壳脚本,并使用颜色转义序列对其进行着色。这是Linux上的一个简单示例(我不确定在Windows上的外观如何,但我想有一种方法.. :))

  • 问题内容: 我找不到golang依赖于c运行时的信息吗?如果依赖它,它是否会在go-binary中静态编译以使Go-app可以在任何地方工作而无需依赖? 这是有关什么是C运行时的主题 libcmt是Microsoft编译器提供的C标准库的(几种)实现。它们提供三种基本类型的库的“调试”和“发行”版本:单线程(始终静态链接),多线程静态链接和多线程动态链接(尽管取决于您使用的编译器版本)使用,其中一