How do you mark a Cucumber Scenario as Pending

2019-01-25 01:15发布

How do I mark a cucumber scenario as pending so it doesn't get counted as a passed?

Scenario: Guest should not see edit link
# pending implementation

Shouldn't I be able to mark is as pending?

4条回答
一纸荒年 Trace。
2楼-- · 2019-01-25 01:49

Another possibility is the @wip tag (work in progress). Scenarios tagged @wip will not be run by default, but just when you explicitly request them.

@wip
Scenario: New product form should have some special field
  Given I still work on this feature

This way you can exclude some scenarios from the automated build, so that it doesn't break while you are working on the feature.

查看更多
老娘就宠你
3楼-- · 2019-01-25 01:49

Okay figured this one out.

The Scenarios steps are marked as pending if it's not found in any of the steps files.

Scenario: New product form should have some special field
  Given joe is logged in as an user
  When on the new exercise page
  Then the select field should have some special field

It's even nice enough to stub out the pending step.

When /^on the new exercise page$/ do
  pending # express the regexp above with the code you wish you had
end
查看更多
祖国的老花朵
4楼-- · 2019-01-25 02:08

In addition to averell's answer, you can exclude scenario tags when running cucumber.

If @todo and @wip are tags you want to use for scenarios that are work in process or just mark pending scenarios, run your features like:

cucumber --tags ~@todo --tags ~@wip

If you're using Guard do something like this:

guard 'cucumber', :notification => true, :all_on_start => true,
                      :cmd => "bundle exec cucumber", 
                      :cli => "--tags ~@todo --tags ~@wip" do
   watch(%r{^features/.+\.feature$})
   watch(%r{^features/support/.+$})  { 'features' }
   watch(%r{^features/step_definitions/(.+)_steps\.rb$}) do |m|
     Dir[File.join("**/#{m[1]}.feature")][0] || 'features'
   end
end
查看更多
贪生不怕死
5楼-- · 2019-01-25 02:09

The problem with the @wip tag, I've found, is that it doesn't make your test suite yellow. It completely ignores the wip features, and you tend to forget they exist. This has bitten my team in the rear when scenarios are tagged as @wip and then forgotten. I wish there was a better solution. The best I have is adding this custom step:

Given /^PENDING/ do
  pending
end

Rather than mark a real feature as pending, I can put this into the lineup with a message, like so:

Given PENDING: we need client input

Then it shows up like this:

(::) pending steps (::)

features/example.feature:15:in `Given PENDING: we need client input'

Pending halts the chain of tests, but it does NOT prevent cucumber from nagging about any undefined steps that follow in that same scenario. Also, ideally failing and pending features would tell you the name of the scenario that failed, but they don't.

查看更多
登录 后发表回答