Cucumber: Таблица сценариев повторного использования таблицы примеров
У меня есть несколько тестов, как показано ниже:
Scenario Outline: Add two numebrs
Given two numbers <number_1> and <number_2>
When I add them
Then Result is <number_3>
Examples:
|number_1|number_2|number_3|
|2 |3 |5 |
|1 |2 |3 |
Scenario Outline: Update two numebrs
Given two numbers <number_1> and <number_2>
When I update them
Then Result is <number_3>
Examples:
|number_1|number_2|number_3|
|2 |3 |5 |
|1 |2 |3 |
Для каждого теста я должен добавить одну и ту же таблицу примеров.
Есть ли способ извлечь эту таблицу, чтобы использовать один и тот же для всех тестов?
2 ответа
Самое простое решение, которое приходит мне в голову, - это объединение обоих сценариев и извлечение подробностей из таблицы примеров. Так это будет выглядеть так:
| number_1 | number_2 | operation | result |
У вас есть другая возможность.
Scenario: Add two numebrs
Given I have the matrix of numbers
When I add them
Then I would have the resulting vector.
Scenario: Update two numebrs
Given I have the matrix of numbers
When I update them
Then I would have the resulting vector.
Где "матрица чисел" и "результирующий вектор" идут в файл defs шага.
Вы можете использовать qaf-gherkin, где вы можете перемещать примеры во внешний файл и использовать его с одним или несколькими сценариями. С qaf ваш файл функций может выглядеть так:
Scenario Outline: Add two numebrs
Given two numbers <number_1> and <number_2>
When I add them
Then Result is <number_3>
Examples::{'datafile':'resources/testdata.txt'}
Scenario Outline: Update two numebrs
Given two numbers <number_1> and <number_2>
When I update them
Then Result is <number_3>
Examples:{'datafile':'resources/testdata.txt'}
И ваш файл данных будет выглядеть так:
#col.separator=|
number_1|number_2|number_3
2|3|5
1|2|3
Выше приведен пример поставщика данных csv (значения, разделенные чартером) с | в качестве сепаратора. Вы также можете использовать различных поставщиков данных для предоставления данных из любой базы данных excel/xml/json/.
Если вы хотите использовать средство передвижения по огурцу, вы не можете использовать QAF, поскольку он работает с TestNG. Также я считаю, что переход на QAF только для использования поставщиков данных - это излишне.
Возможно, вы захотите использовать qaf-cucumber, как указано пользователем861594 (он предлагает выбор использовать средство запуска огурца и все функции QAF BDD2), но на данный момент плагин находится в стадии бета-тестирования; Я тестировал его, и он глючит (заполнители для примеров не работают, несовместимы с pretty). Надеюсь, скоро выйдет стабильный релиз.
Решение, которое я выбрал, в принципе такое же, как и то, что делает qaf-cucumber: перезаписать компилятор Gherkin, являющийся транзитивной зависимостью, с помощью cucumber и изменить только способ анализа схемы сценария, чтобы примеры можно было извлекать из файлов.csv/.txt. Для этого вам нужно создать классgherkin.pickles.Compiler
. Это тот же путь, что и у настоящего компилятора gherkin, поэтому ссылка на него будет перезаписана. Затем вы можете скопировать / вставить код настоящего компилятора gherkin и изменить его в соответствии со своими потребностями.
Конечно, это не идеальное решение. Например, если путь к компилятору gherkin изменится после обновления версии, путь к вашему компилятору тоже придется изменить.
Примечание: на данный момент qaf-cucumber не работает с красивым плагином, потому что он снова анализирует сценарий перед его печатью, но не сCompiler
класс корнишонов. Это делается в классеio.cucumber.core.plugin.TestSourcesModel
, поэтому для хорошей работы вам, возможно, также придется перезаписать этот класс. Я сделал и то, и другое, и пока все работает нормально.