История: Короткое описание требуемого функционала → Заголовок
В роли определенного участника взаимодействия с системой
Чтобы достичь определенных целей → Описание
Я хочу получить определенную пользу
Сценарий: Какая-то определенная бизнес-ситуация → Сценарий
Допустим какое-то условие
И ещё одно условие
Когда предпринимается какое-то действие участником
И им делается ещё что-то
И вдобавок он совершил что-то ещё
Тогда получается какой-то проверяемый результат
И что-то ещё случается, что мы можем проверить
Feature: Login
История: Вход в приложение
As a user
In order to pay online
I want to log in
Как пользователь
Чтобы совершить платеж онлайн
Я хочу войти в свой аккаунт
Given User is on Login Page
When User enters login 'user_login'
And User enters password 'user_password'
Then ‘Welcome to our site’ message displayed
Допустим пользователь находится на странице логина
Когда пользователь вводит логин 'user_login'
И пользователь вводит пароль 'user_password'
Тогда появляется сообщение ‘Welcome to our site’
Background:
Given user inserts credit card into ATM
And PIN-code is required
Предыстория:
Допустим пользователь вставляет в банкомат банковскую карту
И банкомат выдает сообщение о необходимости ввода PIN-кода
Scenario Outline: Cash withdrawal
When user selects <exchange> option
Then ATM should issue <quantity> banknotes
Examples:
| exchange | quantity |
| large | 1 |
| small | 5 |
Сценарий-аутлайн: Снятие наличных
Когда пользователь выбирает опцию <размен>
Тогда банкомат выдает <количество> купюр
Примеры:
| размен | количество | ---> Заголовок
| крупными | 1 |
| мелкими | 5 |
# language: en → Комментарий
@all → Тэг
Feature: Credit card authentication → Заголовок
ATM should ask for PIN-code → Описание
ATM should ward user in case PIN-code is incorrect
Authentication is successful if PIN-code is correct
Background: → Предыстория
Given user inserts credit card into ATM
And ATM asks for PIN-code
@correct → Тэг
Scenario: Successful authentication → Сценарий
When user enters correct PIN-code → Шаг
Then ATM displays available money → Шаг
@fail → Тэг
Scenario: Failed authentication → Сценарий
When user enters incorrect PIN-code → Шаг
Then ATM displays message about incorrect PIN-code
Scenario Outline: Cash withdrawal
When user selects <exchange> option
Then ATM should issue <quantity> banknotes
Examples:
| exchange | quantity |
| large | 1 |
| small | 5 |
# language: ru → Комментарий
@all → Тэг
История: Аутентификация банковской карты → Заголовок
Банкомат должен спросить PIN-код карты → Описание
Банкомат должен выдать предупреждение если код неверный
Аутентификация успешна если если код правильный
Предыстория: → Предыстория
Допустим пользователь вставляет в банкомат карту
И банкомат выдает сообщение о необходимости ввода PIN
@correct → Тэг
Сценарий: Успешная аутентификация → Сценарий
Если пользователь вводит корректный PIN-код → Шаг
То банкомат отображает количество доступных денег
@fail → Тэг
Сценарий: Некорректная аутентификация → Сценарий
Если пользователь вводит некорректный PIN-код → Шаг
То банкомат оповещает, что введённый код неверный
Сценарий Темплейт: Снятие наличных
Когда пользователь выбирает опцию <размен>
Тогда банкомат выдает <количество> купюр
Примеры:
| размен | количество |
| крупными | 1 |
| мелкими | 5 |
Scenario: Login
Given User enters login 'user_login'
Given /^User enters login '(.+)'$/ do |login_word|
enter(login_word)
end
employee_steps.rb
education_steps.rb
experience_steps.rb
Given /^User enters login '(.+)'$/ do |login_word|
enter(login_word)
end
@all
Feature: Feature 1
@tag1 @tag3 @tag4
Scenario: Scenario 1
Given ...
@tag2
Scenario: Scenario 2
Given ...
@tag5
Scenario: Scenario 3
Given ...
Before do
# Do something before each scenario
end
After do |scenario|
end
After do |s|
Cucumber.wants_to_quit = true if s.failed?
end
AfterStep do |scenario|
end
имя_профиля_1: параметры
имя_профиля_2: параметры
default: --profile html_report
html_report: --format progress --format html --out=features_report.html
smoke: --tags @smoke
├── config
│ └── cucumber.yml
├── features
│ ├── smoke.feature
│ ├── step_definitions
│ │ └── steps.rb
│ └── support
│ ├── env.rb
│ ├── hooks.rb
├── lib
│ ├── city_helper.rb
│ ├── http_api_helper.rb
└── selenium_helper.rb
cucumber --require features features/smoke.feature
cucumber --require features features/smoke.feature --tags @api
cucumber --require features features/smoke.feature --tags @api --profile WEATHER