Cucumber: как реализовать поддержку/крючки для каталога функций.функциональность rb?


Мы используем огурец в качестве тестового жгута

У нас есть такая структура папок:

- automation
    - api
        - api1.feature
        - api2.feature
    - gui
        - gui1.feature
        - gui2.feature
    - step_definitions
        - api_steps.rb
        - gui.steps.rb
    - support
        - hooks.rb
    - cucumber.yml
    - env.rb
    - Gemfile
    - Rakefile

Мне нужно, чтобы в моих крючках происходили разные действия.файл rb (или каталог поддержки в целом)для тестов api и тестов gui. Для моих тестов api мне нужно авторизоваться через наш restapi и получить файл cookie auth. Для моих тестов gui мне нужно создать экземпляр браузера selenium.

Мне нужно, чтобы это работало, когда я выполняю все, выпуская "огурец" в одиночку из уровень "автоматизации" этой структуры папок и когда я выполняю один файл функций, делая:

    $ cucumber gui/gui1.feature -r features
Поэтому мои вопросы касаются того, как лучше всего это сделать.
  1. могу ли я / должен ли я создать какую-то условность в своих крючках.rb-файл в блоке 'Before do' для выполнения различных действий before, основанных на том, из какого каталога выполняется функция?
  2. или я могу / должен создать отдельные опоры / крючки.rb каталоги/файлы внутри каждого из каталогов " api " и графический интерфейс? (эффективно ли Cucumber распознает и избирательно использует несколько каталогов поддержки?)

Спасибо!

2 2

2 ответа:

Огурец действительно не заботится о каталогах и существует только для организационных целей. Я бы постарался избежать любой реализации, основанной на расположении файлов.

Я бы реализовал это с помощью помеченных сценариев и крючков.

Before('@gui') do
   # create browser/login
end

Before('@api') do
  # create restapi/auth cookie
end

Before ('~@gui','~@api') do
  fail('Silly developer, all scenarios must have an @api or @gui tag!')
end

Если вы запустите cucumber --help и посмотрите, в частности, на опцию -r, вы обнаружите, что есть альтернативный подход, который вы можете использовать. Один из них заключается в запуске отдельных экземпляров cucumber с различными включенными файлами. Лучший способ настроить это с помощью профилей через cucumber.в формате YML.

Вы можете легко настроить профиль gui, чтобы включить hooks / gui.РБ и профилей API, чтобы включить крючки/АРІ

Если вам нужно получить еще больше разделения, другой подход будет заключаться в том, чтобы запустить cucumber от каждого из ваших вложенная папка, например automation / api automation / gui, и создайте структуру поддержки / крючков внутри этих папок.