首页 文章

如何在“黄瓜”中“跳过”带有标记的方案?

提问于
浏览
1

我目前有一个包含大量Cucumber .feature 文件的项目,其中许多方案已知被破坏 . 这些场景标记为 @broken ,我们通过使用 -t ~@broken 执行黄瓜来避免运行它们 . 不幸的是,当我们检查黄瓜产量时,这使得这些场景有效地不可见 . 他们不喜欢将这些情景的计数包括在黄瓜产量中 . 它们应该显示为"skipped"测试,而不是根本不显示 .

我尝试了什么:

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

但这引发了一个 Cucumber::Pending 异常,这个异常未被发现,只是失败了 .

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

Given /^PENDING/ do
  pending
end

然后浏览我的所有功能文件,并将此步骤添加到具有 @broken 标记的每个方案中 . 但这似乎很疯狂 . 它不符合"step"应该是什么的语义(更不用说它需要对我的所有特征文件进行广泛的更改,而不是仅仅为标记添加一个钩子) .

这是我用标签做的事情吗?

2 回答

  • 2

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

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

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

    运行时,会优雅地跳过方案 .

    1 scenario (1 skipped)
    
  • 2

    编辑:

    根据你的评论,你使用的是黄瓜-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
    

    然后输出将按预期,标记为挂起(不跳过,因为没有跳过的方案,只传递/失败/挂起/未定义/跳过的步骤和传递/失败/挂起/未定义的场景) .

    希望这可以帮助 .

相关问题