重新运行失败的Behat只测试一组次数

时间:2016-07-12 23:07:23

标签: behat

我有一个Behat测试套件在Pull Requests上运行Travis CI。我知道你可以添加一个" - 重新运行"命令行的选项,以重新运行失败的测试,但对我来说,只是不断尝试重新运行失败的测试,最终超时测试运行会话。

有没有办法限制重新运行测试失败的次数?像:" behat --rerun = 3"尝试运行失败的情况最多三次?

我能想到实现我想要的唯一另一种方式是使用数据库我测试Behat或写入文件并存储测试失败及其运行次数。

编辑:

在本地,运行以下命令最终只重新运行我故意使其失败的一个测试...并且它会循环执行直到发生某些事情。有时它是11次,有时是100次以上。

behat --tags @some_tag
behat --rerun 

所以,这与behat command line guide状态不匹配。在我的终端中,帮助选项让我" - 重新运行重新运行在上次执行期间失败的方案。"没有提到失败的场景文件。我虽然使用3.0版本的behat。

使用的套餐:

    "behat/behat": "~3.0",
    "behat/mink": "~1.5",
    "behat/mink-extension": "~2.0",
    "behat/mink-goutte-driver": "~1.0",
    "behat/mink-selenium2-driver": "~1.1",
    "behat/mink-browserkit-driver": "~1.1",
    "drupal/drupal-extension": "~3.0" 

问题:

随机测试失败,主要是Guzzle超时错误超过30秒试图获取URL。当然你可以尝试增加最大执行时间,但由于其他测试没有问题,等待请求30秒是很长的时间,我不认为这将解决问题,它将使我的测试运行更长的时间没有充分的理由。

1 个答案:

答案 0 :(得分:0)

您可能没有高效的CI设置?

我认为此选项应仅运行一次失败的测试,并且您的设置可能会循环进入。 如果您需要多次运行失败的方案,那么您应该编写一个检查某些条件并使用--rerun运行的脚本。

请注意,正如我在Behat CLI指南中看到的那样,如果在保存失败方案的文件中未找到任何方案,则将执行所有方案。

我不认为在CI中使用'--rerun'是一种很好的做法。在决定重新运行之前,您应该对结果进行高级别的审核。

我今天检查了Behat 3的重新运行,似乎可能存在与重新运行选项相关的错误,我今天在github上看到了一些拉取请求。 其中一个是https://github.com/Behat/Behat/pull/857

与超时相关,您可以检查Travis是否设置了一些超时,它是否有足够的资源,您可以使用相同的步骤从桌面运行它,并查看相同测试环境的差异。

还为guzzle设置了CURLOPT_TIMEOUT,并且在不夸大的情况下需要传递值,您需要找到其他解决方案来提高执行速度。

拥有更高的值不应该是一个问题,因为这应该是一个条件等待,所以如果更快它不会影响执行时间,否则它将等待更长时间的问题场景。