Профили Cucumber и глобальные хуки для выбора браузера

Я новичок в Cucumber и Руби. Я бизнес-аналитик, привыкший писать требования и тестовые примеры, и я читал о Cucumber и Watir, но у меня возникли проблемы с тем, чтобы то, что мне нужно, действительно работало.

Я собираюсь протестировать набор веб-страниц в IE, Firefox и Chrome для разных типов пользователей. Я пишу и помечаю функции, а также создаю профили в Cucumber.yml, поэтому я могу запускать Cucumber с параметром -p, чтобы запускать только соответствующие тесты с тегами для разных типов пользователей.

Я создаю различные объекты страницы, чтобы легко войти в систему как обычный пользователь, пользователь отчетов, пользователь редактора и т. д. Файлы функций будут иметь несколько разные сценарии и условия прохождения/непрохождения для каждого типа пользователя, defs будет вызывать соответствующие объекты страницы для входа в систему в качестве этих типов пользователей.

Вместо того, чтобы дублировать тесты по три раза каждый, чтобы открыть нужный браузер с помощью watir-webdriver, и вместо того, чтобы браузер открывался и закрывался для каждого сценария, я хотел сделать глобальный хук в env.rb или hooks.rb для откройте браузер один и только один раз перед запуском каких-либо функций, а затем закройте его с помощью и после инструкции из глобальных ловушек, когда все функции будут запущены. Опять же, я использую профили, вызывающие помеченные сценарии, чтобы выбрать, какие тесты запускать для каждого типа пользователя.

Проблема, с которой я столкнулся, возникла за шаг до этого, я просто открываю браузер. Я знаю, как пользователю watir-webdriver открывать каждый браузер.

Я хотел добавить глобальные хуки, чтобы открывать браузер перед любым тестированием. Итак, в env.rb я собирался поместить вызов browser = Watir::Browser.new.

Что я хочу сделать, так это иметь три отдельных глобальных хука, по одному для IE, Chrome и Firefox, и вызывать их на основе условия, переданного из профиля в огурце.yml, но я не могу заставить его Работа. Пробовал ставить теги, не помогло. Вы не можете пометить глобальные хуки? Я попробовал это с настройкой if/then/else, но это тоже не сработало.

Я хотел бы иметь возможность передавать параметр или тег из профиля в огурце.yml для вызова только одного глобального хука, такого как:

basicuser_overviewtests_ie: --tags @basic @overview @ie

basicuser_overviewtests_ff: --tags @basic @overview @firefox

Basicuser_newpagetests_ie: --tags @basic @newpage @ie

И т. д... первые два тега будут относиться к сценариям, третий к правильному хуку env.rb.

Или, если бы я мог передать переменную из профиля, это тоже сработало бы. Я не мог понять, как я мог бы использовать переменную среды там.

Я что-то пропустил? Достаточно ли этой информации для объяснения проблемы? Спасибо!


ОБНОВЛЕНИЕ: Часть проблемы, по-видимому, заключается в том, что огурец не распознал папку [support], когда она находилась на том же уровне, что и папка [features], она должна была находиться в [features]. Я сказал, что информация о кьюке будет в порядке на том же уровне, а не внутри функций. Не тот случай.

Итак, теперь я могу запустить три глобальных хука для браузеров, но пометка не помогает, все они запускаются одновременно, даже если помечены для запуска только перед функциями, помеченными @ie, или с профилями, помеченными только для запуска @ie. .

6
задан Stéphane Bruckert 7 September 2016 в 13:31
поделиться