Параметризация в Gherkin является ключевым инструментом для написания гибких и переиспользуемых сценариев тестирования. Она позволяет использовать один и тот же сценарий для множества входных данных без дублирования шагов, что делает тесты компактными, понятными и легко поддерживаемыми.
В Gherkin параметры обозначаются при помощи
placeholder’ов, которые заключаются в угловые скобки
< >. Эти placeholder’ы заменяются конкретными
значениями на этапе выполнения теста.
Пример базовой структуры сценария с параметрами:
Scenario: Авторизация пользователя
Given пользователь находится на странице входа
When он вводит логин "<username>" и пароль "<password>"
Then он видит сообщение "<message>"
В данном примере <username>,
<password> и <message> — это
параметры, которые можно заменять разными значениями для проверки
различных вариантов авторизации.
Для передачи значений параметров применяется блок
Examples. Каждая строка в блоке Examples
соответствует одной итерации сценария с конкретными данными.
Scenario Outline: Проверка авторизации пользователя
Given пользователь находится на странице входа
When он вводит логин "<username>" и пароль "<password>"
Then он видит сообщение "<message>"
Examples:
| username | password | message |
| admin | 12345 | Добро пожаловать |
| guest | guestpass | Ошибка авторизации |
| testuser | test123 | Добро пожаловать |
Examples создаёт отдельный тест
с подставленными значениями.Параметры могут использоваться в любых шагах Gherkin:
Given, When, Then, а также в
And и But. Это позволяет комбинировать
различные параметры для более сложных сценариев.
Scenario Outline: Поиск продукта в интернет-магазине
Given пользователь находится на главной странице
When он ищет продукт "<product>"
And выбирает категорию "<category>"
Then он видит результаты поиска с названием "<product>"
Examples:
| product | category |
| Ноутбук | Электроника|
| Смартфон | Электроника|
| Книга | Литература |
Здесь одна таблица параметров позволяет тестировать различные сочетания продуктов и категорий.
Gherkin поддерживает передачу сложных структур данных, таких как таблицы или списки. Это особенно полезно для тестирования форм или многошаговых процессов.
Пример с таблицей внутри шага:
Scenario Outline: Добавление нескольких товаров в корзину
Given пользователь находится на странице товара
When он добавляет в корзину следующие продукты:
| product | quantity |
| <product1> | <qty1> |
| <product2> | <qty2> |
Then корзина содержит указанные товары
Examples:
| product1 | qty1 | product2 | qty2 |
| Ноутбук | 1 | Мышь | 2 |
| Книга | 3 | Ручка | 5 |
Examples."") для тестирования
граничных условий.В тестах на Protractor шаги Gherkin связываются с функциями JavaScript через step definitions. Параметры передаются как аргументы функции.
Пример:
const { Given, When, Then } = require('cucumber');
When('он вводит логин {string} и пароль {string}', async function(username, password) {
await element(by.id('login')).sendKeys(username);
await element(by.id('password')).sendKeys(password);
await element(by.id('submit')).click();
});
Then('он видит сообщение {string}', async function(message) {
const alertText = await element(by.id('alert')).getText();
expect(alertText).toEqual(message);
});
{string} в step definition соответствует
<username> и <password> в
сценарии.Examples.Examples, вместо копирования сценариев с разными
значениями.Параметризация в Gherkin значительно ускоряет разработку тестов и повышает их качество, позволяя создавать масштабируемые и легко читаемые сценарии для автоматизации на Protractor.