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, поэтому для хорошей работы вам, возможно, также придется перезаписать этот класс. Я сделал и то, и другое, и пока все работает нормально.

Другие вопросы по тегам