Как сделать так, чтобы Огурец создавал пользовательский мир для каждой функции вместо каждого сценария? - PullRequest
0 голосов
/ 28 марта 2019

У меня есть функция, в которой сценарии в файле объектов логически взаимосвязаны, поэтому мои сценарии не могут выполняться независимо.

Хорошо: Я создал CustomWorld, чтобы позволить Cucumber самостоятельно создавать и уничтожать экземпляр моей инфраструктуры.

Плохо: 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

Укус моей структуры: Когда я создаю экземпляр своего класса, создается экземпляр веб-драйвера selenium, открывается браузер и запускается URL-адрес.

Реальная проблема: Я хочу открыть браузер и запускать URL только один раз для каждой функции, а не для каждого сценария.

1 Ответ

1 голос
/ 28 марта 2019

Это нарушение правил BDD и огурца. Вы не должны иметь зависимости между сценариями. Я хотел бы предложить, чтобы ваши Given или Background выполнили настройку, а шаги НЕ были явными.

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

...