我有一个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秒是很长的时间,我不认为这将解决问题,它将使我的测试运行更长的时间没有充分的理由。
答案 0 :(得分:0)
您可能没有高效的CI设置?
我认为此选项应仅运行一次失败的测试,并且您的设置可能会循环进入。 如果您需要多次运行失败的方案,那么您应该编写一个检查某些条件并使用--rerun运行的脚本。
请注意,正如我在Behat CLI指南中看到的那样,如果在保存失败方案的文件中未找到任何方案,则将执行所有方案。
我不认为在CI中使用'--rerun'是一种很好的做法。在决定重新运行之前,您应该对结果进行高级别的审核。
我今天检查了Behat 3的重新运行,似乎可能存在与重新运行选项相关的错误,我今天在github上看到了一些拉取请求。 其中一个是https://github.com/Behat/Behat/pull/857
与超时相关,您可以检查Travis是否设置了一些超时,它是否有足够的资源,您可以使用相同的步骤从桌面运行它,并查看相同测试环境的差异。
还为guzzle设置了CURLOPT_TIMEOUT,并且在不夸大的情况下需要传递值,您需要找到其他解决方案来提高执行速度。
拥有更高的值不应该是一个问题,因为这应该是一个条件等待,所以如果更快它不会影响执行时间,否则它将等待更长时间的问题场景。