Как пропустить тесты в PHPUnit, если сервер Selenium не запущен? - PullRequest
4 голосов
/ 13 сентября 2009

Я хочу добавить набор тестов Selenium как часть глобального набора тестов PHPUnit для приложения. Я подключил набор тестов Selenium к глобальному файлу AllTests.php, и все работает нормально, пока работает сервер Selenium.

Однако мне бы хотелось, чтобы скрипт пропускал тесты Selnium, если сервер Selenium не работает, поэтому другие разработчики не обязаны устанавливать сервер Selenium для запуска тестов. Обычно я пытался бы подключиться в методе setUp каждого тестового примера и пометить тесты как пропущенные, если это не удалось, но, похоже, выдает RuntimeException с сообщением:

The response from the Selenium RC server is invalid: ERROR Server Exception: sessionId should not be null; has this session been started yet?

У кого-нибудь есть способ пометить тесты Selenium как пропущенные в этом сценарии?

Ответы [ 3 ]

2 голосов
/ 23 октября 2009

Вы можете использовать тестовые зависимости , которые были введены в PHPUnit 3.4.

В основном

  1. написать тест, который проверяет, работает ли Selenium.
  2. Если нет, вызовите $ this-> markTestAsSkipped ().
  3. Заставьте все свои требующие проверки селена зависеть от этого.
0 голосов
/ 21 марта 2014

Вы можете попробовать skipWithNoServerRunning() Для получения дополнительной информации следуйте этой ссылке

0 голосов
/ 26 февраля 2013

Моя предпочтительная конфигурация селен / PHPUnit:

Поддержание интеграционных (селеновых) тестов может быть большой работой. Я использую Firefox Selen IDE для разработки тестовых случаев, которые не поддерживают экспорт наборов тестов в PHPUnit, а поддерживают только отдельные тестовые случаи. Таким образом - если бы мне пришлось поддерживать даже 5 тестов, это было бы много ручной работы, чтобы повторно PHPUnit их каждый раз, когда они должны были быть обновлены. Именно поэтому я настроил PHPUnit для использования тестовых файлов Selenium IDE HTML! Они могут быть перезагружены и повторно использованы между PHPUnit и selenium IDE

<?php 
class RunSeleniumTests extends PHPUnit_Extensions_SeleniumTestCase {
    protected $captureScreenshotOnFailure = true;
    protected $screenshotPath = 'build/screenshots';
    protected $screenshotUrl = "http://localhost/site-under-test/build/screenshots";
    //This is where the magic happens! PHPUnit will parse all "selenese" *.html files
    public static $seleneseDirectory = 'tests/selenium';
    protected function setUp() {
            parent::setUp();
            $selenium_running = false;
            $fp = @fsockopen('localhost', 4444);
            if ($fp !== false) {
                    $selenium_running = true;
                    fclose($fp);
            }
            if (! $selenium_running)
                $this->markTestSkipped('Please start selenium server');

            //OK to run tests
            $this->setBrowser("*firefox");
    $this->setBrowserUrl("http://localhost/");
    $this->setSpeed(0);
    $this->start();
            //Setup each test case to be logged into WordPress
            $this->open('/site-under-test/wp-login.php');
            $this->type('id=user_login', 'admin');
            $this->type('id=user_pass', '1234');
            $this->click('id=wp-submit');
            $this->waitForPageToLoad();
    }
    //No need to write separate tests here - PHPUnit runs them all from the Selenese files stored in the $seleneseDirectory above!
} ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...