我创建了一组使用phpunit和selenium创建的测试用例,我在网站上执行。但现在,有一个第二个网站,我必须执行相同的测试。唯一的区别是访问网站的网址。
我尝试过使用每次运行phpunit时设置为不同值的SESSION变量。在每个测试用例中,我都会引用此SESSION var,但它不适用于我。我该如何处理?我不想要两个版本的相同测试用例。
我尝试了什么:
session_start();
$environments = array('www.test1.com', 'www.test2.com');
$arrlength = count($environments);
for($x = 0; $x < $arrlength; $x++) {
$_SESSION['TEST_ENVIRONMENT'] = $environments[$x]; // Set session variable = environment
phpunit -c phpunit.xml // xml file containing the testcases
unset($_SESSION['TEST_ENVIRONMENT']); //Unset only TEST_ENVIRONMENT index in session variable
}
答案 0 :(得分:0)
我建议您使用environment variables而不是会话变量。环境变量允许您定制程序或脚本运行的环境。
他们的副作用也比might not even work on the command-lone的会话少。您还可以在测试套件中更直接地访问环境变量。它们满足了将值传递给测试套件的需求。
让我们看一个例子:
$environments = array('www.test1.com', 'www.test2.com');
foreach ($environments as $environment) {
putenv(sprintf("TEST_ENVIRONMENT=%s", $environment));
passthru('phpunit -c phpunit.xml');
}
此处使用putenv
php function来设置TEST_ENVIRONMENT
环境变量。然后当phpunit执行时,子shell phpunit在继承了PHP脚本环境的情况下执行。
在测试中,当您需要访问TEST_ENVIRONMENT
环境变量时,可以使用
getenv("TEST_ENVIRONMENT");
或
$_ENV["TEST_ENVIRONMENT"];
正如您所看到的,不需要启动会话等,并且访问非常简单。