在花了不少时间挖掘源代码后,我找到了“多浏览器”场景的解决方案。 chapmatic有关多个浏览器和给定答案的断言确实是正确的:如果您在$ browsers数组中定义了多个浏览器,它不适用于并行测试,并且会多次运行相同的浏览器。该解决方案仍然使用环境变量,但您仍然必须使用您的$ browsers数组。
因此,首先确保你在抽象测试类中定义了你的$ browsers数组。然后,假设您定义了env var BROWSER并为其分配了您要测试的浏览器。你可以设置你的抽象测试类下面的静态函数扩展汁\香肠\ 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环境变量中指定的浏览器上运行。我们来看一下由Sauce \ Sausage \ WebDriverTestCase开发的PHPUnit_Extensions_Selenium2TestCase; PHPUnit_Extensions_Selenium2TestCase定义了以下方法:
public static function suite($className)
{
return PHPUnit_Extensions_SeleniumTestSuite::fromTestCaseClass($className);
}
调用此方法来设置测试套件与所有你在$浏览器阵列中指定的浏览器,所以你需要在你的抽象测试类重写此方法,确保调用fromTestCaseClass前browserSetup()()被调用:现在
public static function suite($className)
{
self::browserSetup();
return PHPUnit_Extensions_SeleniumTestSuite::fromTestCaseClass($className);
}
,如果定义环境变量浏览器,你要测试的浏览器,你可以脱掉你的测试套件和$浏览器的阵列会正确覆盖您为BROWSER环境中定义的单个浏览器指定的设置nment变量。确保jenkins在Build-> Execute shell部分中正确设置了这个环境变量,并且你很好。
詹金斯有参数插件,当你触发一个作业时它会带参数。会是这样的:https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Build帮助你? –
我没有问题得到params进入phpunit测试用例。一旦他们在那里,使用它们似乎太“迟”了。 –