#cucumber #gherkin
Вопрос:
Я тестирую приложение, которое используется в аэропортах. Для одной из моих функций корнишона мне нужно несколько сценариев, в которых все действия выполняются во время полета. Для каждого сценария требуется свой собственный полет с немного разными данными.
В идеале я хотел бы поместить «создать полет» в фоновом режиме, потому что каждый сценарий требует полета. Моя проблема в том, что для этого фонового шага потребуется использовать разные данные для каждого сценария, и я не уверен, поддерживает ли это cucumber.
Упрощенно говоря, я хотел бы сделать что-то подобное:
Feature: Arrival flights
Background:
Given I am logged in to the application
And a flight is created with the following data
| Scenario | Origin | ETA | Flightno | Airline
| 1 | AMS | 12:00 | 1111 | KM
| 2 | LIS | 13:00 | 2222 | TS
Scenario: User is able to open a flight
When the user opens flight 'Flightno'
Then flight 'Flightno' is opened
Scenario: User is able to open the open a flight
When the user opens flight 'Flightno'
And the user clicks the 'edit flight' button
Then the edit flight interface is opened for flight 'Flightno'
Повторное использование одного и того же рейса не является вариантом, равно как и использование схемы сценария
Может ли кто-нибудь посоветовать хороший способ сделать это без необходимости включать шаг «создать рейс» в каждый сценарий?
Если это невозможно сделать, и «создать рейс» должен быть в каждом сценарии, может ли кто-нибудь посоветовать, какое ключевое слово я должен использовать для начала этого шага? Поскольку создание полета на самом деле не то, что я хочу проверить, я бы сказал, что это «Данность». Но поскольку мой фон уже начинается с «Данного», это приведет к 2 «Данным» шагам.
Я мог бы поставить » И «перед ним, но это заставило бы сам сценарий начинаться с «И», что, на мой взгляд, выглядит немного странно. Я знаю, что технически это не имеет никакого значения, но я хотел бы знать, каков общепринятый способ сделать это.
Заранее спасибо!
Ответ №1:
Это может быть результатом упрощения проблемы, но детали в ваших примерах в основном ложные. Вам вообще не нужно их упоминать, потому что они не имеют отношения к сценарию.
Не теряя ничего, вы могли бы написать свой сценарий так:
Feature: Arrival flights
Scenario: User is able to open a flight
Given there is flight
When the user opens the flight
Then flight is opened
Scenario: User is able to open the open a flight
Given there is flight
When the user opens the flight
Then user clicks the 'edit flight' button
And the edit flight interface is opened for the flight
На этом there is flight
этапе вы создадите рейс со случайными, но уникальными данными и где-нибудь сохраните ссылку на этот рейс. На следующих шагах, которые ссылаются на «рейс», вы затем используете созданный вами рейс.
Организация этих контекстуальных данных может потребовать некоторой работы, но взгляните на шаблон воспроизведения экрана, чтобы сделать это проще.
https://cucumber.io/blog/bdd/understanding-screenplay-(часть 1)/
Также обратите внимание, что вам не нужно каждый раз упоминать, что вы вошли в систему. Это совершенно нормально-делать это как часть user opens the flight
шага.
Комментарии:
1. Спасибо за эти идеи, это, несомненно, поможет мне справиться с этим сценарием