我有10个测试要在cucumber中运行,我正在使用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对此有什么帮助吗?
发布于 2017-06-01 03:34:33
我认为你正在攀登一个滑坡路,你的测试是相互依赖才能通过的。在以后的工作中,您可能会不断遇到这种方法的问题。
我建议编写你的测试,这样它们就不会相互依赖,并使用像Factory Girl这样的框架来存根测试对象等。这里有很大的灵活性,并且与黄瓜很好地集成在一起。
更新:根据您的评论,动态口令的测试应该是在您的TEST环境之外完成的集成测试。例如,当您将新代码部署到您的DEV环境时,您的集成测试(测试动态口令)应该在部署的代码上运行。
在您的TEST环境中,您可以fake动态口令(与工厂女孩)。这将消除间歇性的失败,并使您的测试彼此独立,从而使您的测试套件更加整洁和可维护。
在短期内,也许您可以创建一个全局状态变量来保存测试运行的状态。缺点是,您将不得不在每次测试中检查这一点。
https://stackoverflow.com/questions/44279981
复制相似问题