После вопроса о stackoverflow Параметры в Бехат 3 Ян нашел решение для параметров передачи.
Для окружающей среды это нормально, но для параметров страны я немного запутался. У меня есть такая функция:
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
Но со схемой сценария весь сценарий выполняется для каждой страны. Я хочу сделать то же самое, но со списком стран, переданных в параметрах.
Может быть, с помощью ловушки 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 с параметром страны. У этого также есть некоторые минусы:
Как видите, это не тривиальная задача. Лично я лучше верю во второе решение, хотя оно может быть более своевременным, но оно также дает много возможностей для настройки. С другой стороны, если у вас нет совершенно разного содержания / логики для каждой страны, вам не нужно вдаваться в такие крайности. Достаточно сделать несколько целевых проверок, чтобы язык мог быть изменен и изменился ли он должным образом. Повторное проведение одних и тех же испытаний для 40 стран займет несколько часов и не принесет существенной пользы.
Других решений пока нет …