Я новичок в 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. .