Можете ли вы использовать внешние ресурсы в разделе «Примеры функции Cucumber:»?

#selenium #automation #cucumber #gherkin

#selenium #автоматизация #cucumber #корнишон

Вопрос:

Вот мой файл тестовой функции с одним сценарием

 Feature: My test feature

Scenario Outline: I want user to be logged into MyPage

When user goes to MyPage
And user fills "<test_login>" login field
And user fills "<test_password>" password field
And user clicks Login button
Then user should be logged in

Examples:
|test_login|test_password|
|login1234|password1234|
  

Я хотел бы изменить мой раздел Examples: на что-то вроде этого

 Examples:
src/test/resources/datatables/logind_data.table
  

Я хочу использовать путь к файлу, который содержит таблицу данных, но я получаю сообщение об ошибке Cucumber gherkins builder.
error_modal

Возможно ли использовать внешние ресурсы в «Примерах:»?

Ответ №1:

В настоящее время это невозможно. Мы обсуждаем, как реализовать is в этом выпуске. Не стесняйтесь присоединиться к разговору там.

Ответ №2:

Cucumber сейчас не поддерживает никаких внешних файлов. Это невозможно. Однако вы можете попробовать использовать файл свойств в коде cucumber и инициализировать его. Но опять же, вы не можете сохранить все данные в файле свойств

Ответ №3:

Лучший способ для такого рода вещей — написать лучшие сценарии, которые абстрагируются от деталей.

Но прежде всего вам нужно ответить на несколько вопросов.

Зачем вам нужно проверять, что множество разных пользователей могут входить в систему? Какую выгоду вы получаете от тестирования дополнительных пользователей?

Предполагая, что у вас действительно есть веская причина для тестирования группы пользователей, вы могли бы написать что-то вроде

 Scenario: Foo users can sign in
  Given Foo users are registered
  When Foo users sign in
  Then Foo users should have signed in
  

И поместите все подробности о том, как вы это делаете, в свои определения шагов. Это позволит вам делать такие вещи, как

 Given 'Foo users are registered' do
  @foo_users = load_foo_users(path: src/test/resources/datatables/logind_data.table)
  @foo_users.each do |user|
    register_user(user: user)
  end
 end
  

Вы можете обойти пользователей на шаге when и записать результаты в другом глобальном. А затем изучите результаты на шаге Then.

Здесь используется пара общих методов

  • нажмите «как» в стеке тестов (features, step_defs, helper_methods, код приложения)
  • используйте глобальные переменные для обмена данными между этапами
  • используйте абстрактный простой язык в сценариях
  • присваивает конструкциям имена и ссылается на них по имени в сценариях. Не определяйте их содержимое.