Программно запустить тестовый пример PHPUnit Selenium (внутри PHP)

Как я могу запустить тест «внутри PHP» вместо использования команды «phpunit»? Пример:

<?php
require_once 'PHPUnit/Extensions/SeleniumTestCase.php';
class MySeleniumTest extends PHPUnit_Extensions_SeleniumTestCase {

    protected function setUp() {
        $this->setBrowser("*firefox");
        $this->setBrowserUrl("http://example.com/");
    }

    public function testMyTestCase() {
        $this->open("/");
        $this->click("//a[@href='/contact/']");
    }

}

$test = new MySeleniumTest();
//I want to run the test and get information about the results so I can store them in the database, send an email etc.
?>

Или мне нужно записать тест в файл, вызвать phpunit через system()/exec() и проанализировать вывод? :(


person Community    schedule 18.02.2011    source источник


Ответы (2)


Просто используйте прилагаемый драйвер.

require_once 'PHPUnit/Extensions/SeleniumTestCase/Driver.php';
//You may need to load a few other libraries.  Try it.

Затем вам нужно настроить его так, как это делает SeleniumTestCase:

$driver = new PHPUnit_Extensions_SeleniumTestCase_Driver;
$driver->setName($browser['name']);
$driver->setBrowser($browser['browser']);
$driver->setHost($browser['host']);
$driver->setPort($browser['port']);
$driver->setTimeout($browser['timeout']);
$driver->setHttpTimeout($browser['httpTimeout']);

Тогда просто:

$driver->open('/');
$driver->click("//a[@href='/contact/']");
person ircmaxell    schedule 19.02.2011
comment
Либо я не понимаю, либо вы меня неправильно поняли :) Цель этого — хранить тестовые случаи в базе данных и запускать их по запросу. Я также хочу отправить результаты по электронной почте. Поэтому мне нужен способ получить тест из базы данных (достаточно просто), запустить тестовый пример и получить результаты (для хранилища БД и содержимого электронной почты). - person ; 19.02.2011
comment
@arex1337 - Какая разница?! Все, что вам нужно хранить в БД, — это тестовые процедуры (методы сопоставления — open(), click() и т. д. + их параметры), а не конфигурацию драйвера. Просто прочитайте тестовые процедуры из Db и примените их, как только у вас заработает драйвер, как показано выше. Парень только что сказал вам, что вам не нужно создавать/расширять какие-либо классы, просто используйте уже существующую библиотеку/класс. - person Shahriyar Imanov; 21.02.2011

Вот пример из документации phpunit. :

<?php
require_once 'PHPUnit/Framework.php';

require_once 'ArrayTest.php';
require_once 'SimpleTestListener.php';

// Create a test suite that contains the tests
// from the ArrayTest class.
$suite = new PHPUnit_Framework_TestSuite('ArrayTest');

// Create a test result and attach a SimpleTestListener
// object as an observer to it.
$result = new PHPUnit_Framework_TestResult;
$result->addListener(new SimpleTestListener);

// Run the tests.
$suite->run($result);
?>

Код для SimpleTestListener находится на той же странице.

person Long Ears    schedule 23.02.2011