我有10个要在黄瓜中运行的测试,我使用ruby来编写代码。在测试设计下的应用程序迫使我进行相互依赖的测试。
因此,直到前一个案例成为通过,下一个案例才会失败。我已添加cucumber_wants_to_quit
以防第二种情况失败,以避免等待仅获取失败报告。现在,我正在寻找类似的东西,再次运行第二个场景,并继续运行它直到pass
,然后才进入第三个场景。
我知道命令cucumber re-run
但不想使用它,因为这基本上运行所有场景并在第一次完整运行完成后运行失败的案例。
我的要求基本上是,当第二个场景失败时,在转移到第三个场景之前,运行第二个场景直到通过。在编码语言中像
After do |scenario.name|
if scenario.name == failed?
status = scenario.name.run_again until scenario.name == passed
if !status
Cucumber.wants_to_quit = true
end
end
end
对此有何帮助?
答案 0 :(得分:2)
我认为你正在爬上一个滑坡,有相互依赖的测试通过。你可能会继续遇到这种方法的问题。
我建议编写测试,使它们不相互依赖,并使用像Factory Girl这样的框架来存根测试对象等。这里有很多灵活性,并且与黄瓜很好地集成。
更新:根据您的评论,OTP的测试应该是在TEST
环境之外完成的集成测试。例如,当您将新代码部署到DEV
环境时,您的集成测试(测试OTP)应该在部署的代码上运行。
在TEST
环境中,您可以fake
OTP(与Factory Girl合作)。这将消除间歇性故障,并使您的测试彼此独立,这使您的测试套件更加干净和可维护。
在短期内,您可以创建一个全局状态变量来保存测试运行的状态。缺点是你必须在每次测试中检查这一点。