如何在1个以上的网站上执行phpunit测试

时间:2017-06-01 15:00:01

标签: php selenium-webdriver phpunit selenium-chromedriver

我创建了一组使用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
    }

1 个答案:

答案 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"];

正如您所看到的,不需要启动会话等,并且访问非常简单。