我目前有一个包含大量Cucumber .feature
文件的项目,其中许多方案已知被破坏。这些方案标有@broken
,我们通过使用-t ~@broken
执行黄瓜来避免运行它们。不幸的是,当我们检查黄瓜产量时,这使得这些情景实际上是不可见的。它们不会显示为已通过,失败或跳过。我想要的是将这些场景的计数包含在黄瓜输出中。他们应该显示为"跳过"测试,而不是完全没有显示。
我尝试了什么:
Before('@broken') do |scenario|
pending
end
但是这引发了一个Cucumber::Pending
异常,这个异常未被捕获,只是失败了。
我知道我可以写一个像这样的步骤:
Given /^PENDING/ do
pending
end
然后浏览我的所有功能文件,并将此步骤添加到具有@broken
标记的每个方案中。但这似乎很疯狂。它不符合" step"的语义。应该是(更不用说它需要对我的所有功能文件进行广泛的更改,而不是仅仅为标签添加一个钩子)。
这是我用标签做的事吗?
答案 0 :(得分: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
然后输出将按预期进行,标记为挂起(不跳过,因为没有跳过的方案,只传递/失败/挂起/未定义/跳过步骤和传递/失败/挂起/未定义场景)。
希望这有帮助。
答案 1 :(得分:2)
虽然这个问题很老,但它仍然是谷歌的最爱 - 所以为了未来访问者的利益,我正在分享这个。
我正在标记我的场景,然后在我的“step_definitions / hooks.rb”文件中,我有类似这样的内容:
Before('@proxy') do
skip_this_scenario unless proxy_running?
end
运行时,会优雅地跳过方案。
1 scenario (1 skipped)