2017-06-01 18 views
0

我創建了一套使用我在網站上執行的phpunit和selenium創建的測試用例。但現在,我有第二個網站必須執行相同的測試。唯一的區別是訪問該網站的網址。我如何在1個以上的網站上執行phpunit測試

我曾嘗試使用SESSION變量,每次運行phpunit時設置爲不同的值。在每個測試用例中,我都會引用這個SESSION變量,但它不適用於我。我如何處理這個問題?我不想擁有2個版本相同的測試用例。

我的嘗試:

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

代替了會話變量,我建議你使用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"]; 

做到這一點,然後你可以看到有沒有必要啓動會話等,訪問非常簡單。