我想添加一套Selenium测试作为应用程序的全局PHPUnit测试套件的一部分。我已经将Selenium测试套件连接到全局AllTests.php
文件中,一切运行正常,而Selenium服务器正在运行。
但是,如果Selenium服务器没有运行,我希望脚本跳过Selnium测试,这样其他开发人员就不会被迫安装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测试标记为跳过?
答案 0 :(得分:2)
您可以使用PHPUnit 3.4中引入的test dependencies。
基本上
答案 1 :(得分:0)
我首选的selenium / PHPUnit配置:
维护集成(硒)测试可能需要做很多工作。我使用firefox selenium IDE开发测试用例,它不支持将测试套件导出到PHPUnit,并且只支持单个测试用例。因此 - 如果我必须维护甚至5次测试,那么每次需要更新时,需要进行大量的手动工作来重新PHPUnit。 这就是我设置PHPUnit以使用Selenium IDE的HTML测试文件的原因!他们可以重新加载&在PHPUnit和amp;之间重用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!
} ?>
答案 2 :(得分:0)
您可以尝试skipWithNoServerRunning()
有关更多信息,请参阅this link