Используйте одни и те же примеры для нескольких сценариев Cucumber js

Мне сложно использовать несколько схем сценария для использования одного и того же примера и выполнения в последовательности. Я использую такую ​​функцию для тестирования:

Scenario Outline: Time consuming login process
  When I enter login credentials for <user> 
  Then I should be on the home page

  Examples:
    | user |
    | user1 |
    | user2 |
    | user3 |

Scenario Outline: User action 1
  Given I am logged in
  When I do something
  Then I should see response

  Examples:
    | user |
    | user1 |
    | user2 |
    | user3 |

#Many more tests needed to be done for each user

Проблема с использованием схемы сценария для каждого сценария заключается в том, что длительный сценарий (вход в систему) необходимо запускать для каждого теста. Чтобы справиться с этим, я провел эти тесты как одну большую схему сценария:

Scenario Outline: 
  #Scenario: Time consuming login process
    When I enter login credentials for <user> 
    Then I should be on the home page

  #Scenario: User action 1
    Given I am logged in
    When I do something
    Then I should see response

  #More tests here

    Examples:
      | user |
      | user1 |
      | user2 |
      | user3 |

Я обнаружил, что выполнение всех тестов в виде одного большого плана сценария заставляет их работать быстрее, но отчеты по огурцам и различия между сценариями менее ясны.

Есть ли способ вложить сценарии в схемы сценариев? Если нет, что лучше всего в этой ситуации?


person Carter Nosflow    schedule 18.04.2018    source источник


Ответы (1)


Вложенность создает зависимые сценарии. Наличие зависимых сценариев - это анти-шаблон BDD. Последовательные сценарии также являются анти-шаблоном. Каждый сценарий должен работать независимо. Так что это не выход. Возможно, стоит пересмотреть свою функцию, чтобы лучше понять, какое поведение ее поддерживает.

Насколько я понимаю, если у вас есть условие, которое применяется к нескольким сценариям одной и той же функции, это считается background сценарием. Так что, возможно, если вам нужно проверить поведение входа в систему, сделайте это один раз в фоновом режиме. Затем он будет по умолчанию применяться ко всем сценариям этой функции.

Если у вас есть зависящие от состояния предварительные условия, используйте вспомогательные методы или конструктор world.

Если у кого-то есть более доработанное решение, пожалуйста, добавляйте.

person Mike S.    schedule 23.04.2018