После вопроса о параметрах stackoverflow в Behat 3 Ian нашел решение для параметров pass to behat.
Для окружающей среды это нормально, но для параметров страны я немного смущен. У меня есть такая функция:
Scenario Outline: Test if first link works Given I am on website "<country>" Then I visit the url "my-url" Then I click on first link Examples: | country | | US | | IT |
Это то, что у меня есть, и теперь я хочу запустить что-то вроде:
env="stg" country="US,IT" php53 bin/behat --suite=mySuite
Но с контуром сценария весь сценарий запускается для каждой страны. Я хочу сделать то же самое, но со списком страны, переданным в параметрах.
Может быть, с помощью hook AfterScenario или что-то в этом роде я могу запустить весь свой сценарий с другой конфигурацией?
Благодаря !
К сожалению, это невозможно со стандартными инструментами, по крайней мере, без головной боли и изобретательности колеса. Интересный вопрос, хотя!
Вы можете заставить это работать, настроив комплекты в вашем behat.yml
. У вас должен быть пакет по умолчанию с базовой конфигурацией и набор для каждого языка:
default: extensions: Behat\MinkExtension suites: default: paths: […] contexts: […] US: paths: […] contexts: […] IT: paths: […] contexts: […]
И используйте крюк @beforeSuite
:
/** * @beforeSuite * * @param BeforeSuiteScope $scope */ public static function setUpSuite(BeforeSuiteScope $scope) { $suiteName = $scope->getSpecificationIterator()->getSuite()->getName(); // If the suite denotes one of the languages, then set it as the main language. }
Это решение имеет несколько минусов:
Еще одно решение, которое приходит на ум, – просто использовать другой скрипт PHP / Bash, который будет последовательно запускать Behat с параметром country. У него также есть некоторые минусы:
Как вы видите, это не тривиальная задача. Лично я лучше верю во второе решение, хотя это может быть более своевременным, это также дает пространство для большой настройки. С другой стороны, если у вас нет совершенно другого контента / логики для каждой страны, вам может не понадобиться входить в такие крайности. Выполнение нескольких целенаправленных проверок того, что язык может быть изменен и что он изменяется, как ожидается, должен быть достаточным. Повторный запуск таких же тестов для 40 стран займет несколько часов и не добавит значимой ценности.