【发布时间】:2014-02-01 06:37:11
【问题描述】:
我正在尝试清理工作中的功能套件,我想知道是否有办法让 cucumber 重复一个场景并查看是否通过,然后再转到功能中的下一个场景? Phantom 是我的无头 webkit 浏览器 poltergeist 是我的驱动程序。
基本上,我们的构建一直失败,因为盒子被所有测试压得喘不过气来,并且在某个场景中,页面没有足够的时间来呈现我们正在尝试测试的任何内容。因此,这会产生误报。我不知道有什么方法可以预测什么测试会挂起构建。
最好在每个场景之后都有一个钩子(一个想法)。如果场景通过,那么很好地打印该场景的结果并继续前进。但是,如果场景失败,请尝试再次运行它,以确保它不会让构建变得头晕目眩。然后,只有这样,您才会打印该场景的结果并继续进行下一个测试。
有人知道如何实现吗?
我在想类似的事情
After do |scenario|
if scenario.failed?
result = scenario.run_again # I just made this function up I know for a fact this doesn't actually exist (see http://cukes.info/api/cucumber/ruby/yardoc/Cucumber/Ast/Scenario.html)
if !result
Cucumber.wants_to_quit = true
end
end
end
我看到的最初解决方案是:How to rerun the failed scenarios using Cucumber?
这很好,但我需要确保
cucumber @rerun.txt
如果测试通过,实际上更正了报告。喜欢
cucumber @rerun.txt --format junit --out foo.xml
哪里 foo.xml 是 junit 报告,最初说功能 1、2 和 5 正在通过,而 3 和 4 失败,但现在会说 1、2、3、4 和 5 正在通过,即使 rerun.txt只说重播3和4。
【问题讨论】:
-
听起来你在这里有一个负载能力问题是真实的。如果您的测试环境被一些黄瓜测试所淹没,那么如果多个用户碰巧同时命中它,真实环境有什么机会。也许重点应该放在更像生产的更强大的测试服务器上,或者解决在可能相当适中的负载下的站点性能问题(这毕竟是功能测试,而不是负载测试,有多少测试正在运行同时?)
-
@mpdunson 您是否碰巧找到了方法?我基本上知道这里的
cucumber re-run命令,但这对我不起作用。由于应用程序的设计方式,我拥有的测试相互依赖。所以我所有的测试都失败了,如果第二个测试用例由于某种原因失败了。我一直在寻找与您类似的方法,如果我可以运行该特定场景直到它通过,然后再进行下一个?而不是在步骤中使用until或unless循环。有什么想法吗?
标签: testing cucumber hook suite