【问题标题】:How do I "skip" a scenario with a tag in Cucumber?如何在 Cucumber 中“跳过”带有标签的场景?
【发布时间】:2016-05-15 23:58:03
【问题描述】:

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

我尝试了什么:

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

但这会引发 Cucumber::Pending 异常,该异常未被捕获,只是使场景失败。

我知道我可以编写如下步骤:

Given /^PENDING/ do
  pending
end

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

这是我只需一个标签就能做到的吗?

【问题讨论】:

    标签: ruby cucumber


    【解决方案1】:

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

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

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

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

    1 scenario (1 skipped)
    

    【讨论】:

      【解决方案2】:

      编辑:

      根据您的评论,您使用的是 cucumber-1.3.10。那个版本是不可能的。

      在 cucumber-jvm 和 cucumber-js 中,它按预期工作,将场景标记为待处理,但在 ruby​​ 中令人惊讶的是,如果从 Before(或 After)钩子中抛出 Pending 异常,它会将场景标记为失败而不是待定。

      所以你的第一个建议是正确的。您应该使用标记的钩子。

      Before('@broken') do
       pending
      end
      

      但是您必须更新您的 Gemfile 以使用最新版本的黄瓜,即 2.0.0.beta.3。

      source 'https://rubygems.org'
      group :test do
        gem 'cucumber', '2.0.0.beta.3'
      end
      

      然后输出将如预期的那样,标记为待处理(不跳过,因为没有跳过的场景,只有通过/失败/等待/未定义/跳过的步骤和通过/失败/等待/未定义的场景)。

      希望这会有所帮助。

      【讨论】:

      • 正如我所说,当我尝试使用 tagged 挂钩时,它会将场景标记为失败而不是挂起。我收到以下错误:TODO (Cucumber::Pending) /Library/Ruby/Gems/2.0.0/gems/cucumber-1.3.10/lib/cucumber/rb_support/rb_world.rb:130:in 'pending' /Users/me/test/steps/test.rb:6:in 'Before'
      • 我明白了,我已经建立了一个 Ruby 项目,当挂起的异常从挂钩中抛出时,它确实将挂起的场景标记为失败。在我通常使用的 cucumber-jvm 和 cucumber-js 中,它按预期工作,将场景标记为待处理。无论如何,我都会看看 Ruby 的实现,看看是否有解决方法。问候。
      • 好的,我现在可以使用了,但是您必须更新到最新版本,2.0.0.beta.3,我会更新我的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多