Я создал набор тестовых случаев, созданных с использованием phpunit и selenium, которые я выполняю на веб-сайте. Но теперь есть второй сайт, для которого я должен выполнить те же тесты. Единственное отличие — это URL для доступа к сайту.
Я пытался использовать переменную 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
}
Вместо переменных сеанса я предлагаю вам использовать переменные среды. Переменные среды позволяют адаптировать среду, в которой выполняется программа или скрипт.
Они также имеют меньше побочных эффектов, чем сеансы, которые может даже не работать на комманде. Кроме того, переменные среды более непосредственно доступны в вашем наборе тестов. И они удовлетворяют вашу потребность передать значение вашему комплекту тестов.
Итак, давайте посмотрим на пример:
$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 используется здесь, чтобы установить TEST_ENVIRONMENT
переменная окружения. Затем, когда исполняется phpunit, запускается phpunit под-оболочки в унаследованной среде PHP-скриптов.
В ваших тестах, когда вам нужно получить доступ к этому TEST_ENVIRONMENT
переменная окружения, вы можете сделать это затем с
getenv("TEST_ENVIRONMENT");
или же
$_ENV["TEST_ENVIRONMENT"];
Как видите, нет необходимости начинать сеанс и т. Д., И доступ к нему довольно прост.
Других решений пока нет …