我如何在超过 1 个网站上执行 phpunit 测试
Posted
技术标签:
【中文标题】我如何在超过 1 个网站上执行 phpunit 测试【英文标题】:How can i execute phpunit tests on more than 1 website 【发布时间】:2017-11-02 19:22:59 【问题描述】:我创建了一组使用 phpunit 和 selenium 创建的测试用例,并在网站上执行。但是现在,我必须为第二个网站执行相同的测试。唯一的区别是访问网站的 url。
我尝试使用每次 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
【问题讨论】:
【参考方案1】:我建议您使用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-scripts环境。
在您的测试中,当您需要访问 TEST_ENVIRONMENT
环境变量时,您可以使用
getenv("TEST_ENVIRONMENT");
或
$_ENV["TEST_ENVIRONMENT"];
如您所见,无需启动会话等,访问非常简单。
【讨论】:
以上是关于我如何在超过 1 个网站上执行 phpunit 测试的主要内容,如果未能解决你的问题,请参考以下文章
PHPUnit:模拟__get()导致“__ get()必须正好接受1个参数......”