黄瓜特征和步骤定义

Jon*_*onB 5 ruby cucumber gherkin

我是Cucumber测试的新手.

我创建了两个功能文件:

events.feature
partner.feature
Run Code Online (Sandbox Code Playgroud)

并在step_definitions文件夹中包含我的步骤定义:

./step_definitions/
     events.rb
     partner.rb
Run Code Online (Sandbox Code Playgroud)

似乎Cucumber在所有.rb文件中查找步骤信息.

无论如何限制功能来查看特定的步骤定义文件?

我之所以要这样做的原因,是因为即使我使用了--guess标志,我也会遇到不明确的匹配错误.

我之所以这样做的原因是由于以下原因.我正在测试CMS,并希望在不同的功能中测试每种不同的内容类型(事件和合作伙伴).

events.feature

Feature: Add partner
  As an administrator I can add a new partner

  Scenario: Create partner
    Given I am logged in
    When I create a partner
    Then I should see content
Run Code Online (Sandbox Code Playgroud)

partner.feature

Feature: Add event
  As an administrator I can add a new event

  Scenario: Create event
    Given I am logged in
    When I create an event
    Then I should see content
Run Code Online (Sandbox Code Playgroud)

只关注两个场景中的'那时我应该看到内容',就会发生错误,因为在我需要包含的.rb文件中:

partners.rb

Then /^I should see content$/ do
  BROWSER.html.should include('SOME PARTNER CONTENT')
end
Run Code Online (Sandbox Code Playgroud)

events.rb

Then /^I should see content$/ do
  BROWSER.html.should include('SOME EVENT CONTENT')
end
Run Code Online (Sandbox Code Playgroud)

这意味着"我应该看到内容"的模糊匹配.

我知道有不同的结构方法,即我可以创建一个内容功能,并使用场景大纲:

Feature: Add content
  As an administrator I can add a new content

  Scenario Outline: Create content
    Given I am logged in
    When I create an <content type>
    Then I should see <example content>

    Examples: 
    |event   |March Event | 
    |partner |Joe Blogs   | 
Run Code Online (Sandbox Code Playgroud)

但我不想这样做,因为我想将每种内容类型封装在自己的测试功能中.

所以基本上我需要根据我正在测试的功能来研究如何运行特定的步骤文件.

iaf*_*nov 9

黄瓜总是加载所有文件,我不认为有办法覆盖这种行为.关于模糊步骤的问题 - 解决方案很简单 - 为您的步骤添加参数

Then /^(?:|I )should see "([^"]*)"$/ do |text|
  page.should have_content(text)
end
Run Code Online (Sandbox Code Playgroud)

在场景中,就像这样称呼它

然后我应该看到"伙伴内容"

  • 免费奖金 - 您的场景现在更具可读性