如何在步骤失败时确保黄瓜停止执行?

时间:2011-07-18 23:31:20

标签: ruby-on-rails cucumber

即使在步骤定义失败后黄瓜也会继续执行,并且它不仅输出失败的步骤,还输出传递的步骤。我需要使用什么选项才能确保Cucumber在遇到失败步骤时立即停止执行?

这是我的cucumber.yml文件

<%
rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : ""
rerun_opts = rerun.to_s.strip.empty? ? "--format #{ENV['CUCUMBER_FORMAT'] || 'progress'} features" : "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} #{rerun}"
std_opts = "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} --strict --tags ~@wip"
%>
default: <%= std_opts %> features
wip: --tags @wip:3 --wip features
rerun: <%= rerun_opts %> --format rerun --out rerun.txt --strict --tags ~@wip
autotest: <%= std_opts %> features --color

3 个答案:

答案 0 :(得分:14)

使用cucumber hook

After do |s| 
  # Tell Cucumber to quit after this scenario is done - if it failed.
  Cucumber.wants_to_quit = true if s.failed?
end

或者,提出异常。

推荐的方法是使用黄瓜钩。

答案 1 :(得分:4)

这样可以从命令行快速调用失败:

# `FAST=1 cucumber` to stop on first failure
After do |scenario|
  Cucumber.wants_to_quit = ENV['FAST'] && scenario.failed?
end

答案 2 :(得分:4)

从Cucumber 2.1开始,你可以传递--fail-fast标签。

它应该在失败的第一个场景失败并跳过剩余的场景。

此PR的一部分https://github.com/cucumber/cucumber-ruby/pull/906