Потратив немало времени на копание в исходниках, я нашел решение для сценария «несколько браузеров». утверждения Chapmatic относительно нескольких браузеров и данный ответ были действительно правильными: он не работает для параллельного тестирования и запускает один и тот же браузер несколько раз, если у вас есть несколько браузеров, определенных в вашем массиве $browsers. Решение по-прежнему использует переменные среды, но вы все равно должны использовать свой массив $browsers.
Итак, сначала убедитесь, что вы определили свой массив $browsers в своем абстрактном тестовом классе. Затем, скажем, вы определяете env var BROWSER и назначаете ему браузер, который хотите протестировать. Вы можете настроить следующую статическую функцию в своем абстрактном тестовом классе, который расширяет Sauce\Sausage\WebDriverTestCase:
public static function browserSetup()
{
switch (getenv('BROWSER')) {
case 'firefox':
self::$browsers = array(
array(
'browserName' => 'firefox',
'desiredCapabilities' => array(
'platform' => 'self::WIN_VERSION',
'version' => self::FIREFOX_VERSION,
)
)
);
break;
case 'safari':
//safari desiredCapabilities
break;
case 'explorer':
//ie desiredCapabilities
break;
case 'chrome':
//chrome desiredCapabilities
default: //This will just use the default $browsers array you defined
return;
}
Теперь, когда функция browserSetup() определена, вы должны убедиться, что она вызывается перед настройкой набора тестов, чтобы тесты были настроены для запуска только в том браузере, который вы указали в переменной среды BROWSER. Давайте посмотрим на PHPUnit_Extensions_Selenium2TestCase, который расходуется Sauce\Sausage\WebDriverTestCase; PHPUnit_Extensions_Selenium2TestCase определяет следующий метод:
public static function suite($className)
{
return PHPUnit_Extensions_SeleniumTestSuite::fromTestCaseClass($className);
}
Этот метод вызывается для настройки набора тестов со всеми браузерами, которые вы указали в своем массиве $browsers, поэтому вам необходимо переопределить этот метод в своем абстрактном тестовом классе, обязательно вызывая browserSetup() до вызова fromTestCaseClass():
public static function suite($className)
{
self::browserSetup();
return PHPUnit_Extensions_SeleniumTestSuite::fromTestCaseClass($className);
}
Теперь, если вы определите переменную среды BROWSER с браузером, который хотите протестировать, вы можете запустить свой набор тестов, и ваш массив $browsers будет правильно переопределен настройками, указанными для одного браузера, определенного в вашей переменной среды BROWSER. Убедитесь, что jenkins правильно устанавливает эту переменную среды в разделе Build-> Execute shell, и все готово.
person
Clandestine
schedule
30.07.2013