ruby - 如何在 Cucumber 中使用 "skip"标记场景?

标签 ruby cucumber

我目前有一个项目,其中包含大量 Cucumber .feature 文件,其中许多场景已知已损坏。这些场景用 @broken 标记,我们通过使用 -t ~@broken 执行 cucumber 来避免运行它们。不幸的是,当我们检查 cucumber 输出时,这使得这些场景实际上是不可见的。它们不会显示为通过、失败或跳过。我想要的是将这些场景的数量包含在 cucumber 输出中。它们应该显示为“跳过”测试,而不是根本不显示。

我尝试过的:

Before('@broken') do |scenario|
  pending
end

但是这引发了一个 Cucumber::Pending 异常,如果没有被捕获,就会使场景失败。

我知道我可以这样写一个步骤:

Given /^PENDING/ do
  pending
end

然后浏览我所有的功能文件,并使用 @broken 标记将此步骤添加到每个场景。不过,这似乎很疯狂。它不符合“步骤”应该是什么的语义(更不用说它需要对我所有的功能文件进行广泛的更改,而不是仅仅向标签添加一个钩子(Hook))。

我只需要一个标签就可以做到这一点吗?

最佳答案

虽然这个问题很老,但它仍然是 Google 的最爱 - 所以为了 future 访问者的利益,我将分享这个问题。

我正在标记我的场景,然后在我的“step_definitions/hooks.rb”文件中,我有这样的东西:

Before('@proxy') do 
  skip_this_scenario unless proxy_running?
end

运行时,场景被优雅地跳过。

1 scenario (1 skipped)

关于ruby - 如何在 Cucumber 中使用 "skip"标记场景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26048144/

相关文章:

ruby-on-rails - 如何获取具有不同值的列名

ruby - 使用cucumber/capybara时有没有类似于selenium grid的东西?

cucumber - Capybara中表格的复杂断言

ruby - 在ruby中,如何找到给定字符串的第一个非空白字符的索引

javascript - Rails : Infinite Scroll, 加载微调器而不是文本

ruby - 有没有办法在 Ruby 中解码 q 编码的字符串?

ruby-on-rails - Rails 3. 获取相关模型的属性

jenkins - 尽管测试通过了,为什么 cucumber 在 Jenkins 上总是失败?

ruby - 如何从 Support 文件夹中的 class.rb 调用页面对象

javascript - 如何使用 Cucumber 测试用 javascript 加载的内容