如何使黄瓜为每个功能(而不是每个场景)实例化“定制世界”?

时间:2019-03-28 14:48:00

标签: bdd cucumberjs

我有一个功能,其中功能文件中的方案在逻辑上相互关联-因此我的方案无法独立运行。

不错:我创建了一个CustomWorld,让Cucumber自己创建和销毁我的框架实例。

错误:黄瓜会为每种情况创建并销毁该实例。但是我希望为每个功能(而不是场景)创建和销毁它。

这是我的功能文件

Feature: Table Headers

  Scenario: Check the default headers ### My framework instance created here
    Given I log in to the application ### A setup
    When I navigate to the list page
    Then the table should have the below headers
      | Default Headers |
      | First Name |
      | Last Name  |
      | Age        |

  Scenario: Add columns ### want to reuse the instance created above and destroy automatically after this scenario
    When I add the below columns to display
      | Headers |
      | City    |
      | Country |
    Then the table should have the below headers
      | Default Headers |
      | First Name |
      | Last Name  |
      | Age        |
      | City    |
      | Country |
    And I log out from the application ### A teardown

一口气: 当我创建类的实例时,将创建一个硒webdriver实例,打开浏览器并启动URL。

真正的问题:我只想打开浏览器并启动每个功能一次的URL,而不是每种情况下启动URL。

1 个答案:

答案 0 :(得分:1)

这违反了BDD和黄瓜的规则。您不应在整个方案中都具有依赖性。我建议您的GivenBackground进行设置,并且步骤不明确。

Given I am on the list page
  |Application|
  |###|
Then the table should have the below headers
  | Default Headers |
  | First Name |
  | Last Name  |
  | Age        |

Given I am on the list page
  |Application|
  |###|
When I add the below columns to display
  | Headers |
  | City    |
  | Country |
Then the table should have the below headers
  | Default Headers |
  | First Name |
  | Last Name  |
  | Age        |
  | City    |
  | Country |

您的最终“绝非一步”也不是步骤,不应该包含在您的方案中,它应该是AfterHook的一部分