我正在使用PHPUnit和Selenium 2在我的网络应用上进行一些集成测试。我希望每次测试失败时都会保存截图。以下是我到目前为止的情况:
<?php
include 'c:/wamp/www/testarea/selenium/phpunit-selenium/vendor/autoload.php';
class WebTest extends PHPUnit_Extensions_Selenium2TestCase
{
protected function setUp()
{
$this->setBrowser('firefox');
$this->setBrowserUrl('http://www.google.com/');
}
public function testTitle()
{
$this->url('http://www.google.com/');
file_put_contents("c:/wamp/www/testarea/selenium/phpunit-selenium/screenshots/screenshot1.png",$this->currentScreenshot());
$this->assertEquals('NOT GOOGLE', $this->title());
}
}
这样可以正常工作,并在运行测试时保存屏幕截图 - 但是,我希望能够在测试失败后才能保存屏幕截图,这应该在每次测试时都会发生。有没有办法告诉PHPUnit在每次测试失败后自动运行一个函数?
由于
答案 0 :(得分:8)
尝试使用方法tearDown()
或onNotSuccessfulTest()
答案 1 :(得分:4)
添加到Ricardo Simas的答案,如果你实现了onNotSuccessfulTest方法,请确保调用parent,否则默认的错误处理行为将停止发生。
我想知道为什么我的测试在明显出现错误情况(未找到元素)时正在通过。
e.g。对于我的所有测试用例,我都把它放在一个祖先类中:
public function onNotSuccessfulTest($e){
file_put_contents(__DIR__.'/../../out/screenshots/screenshot1.png', $this->currentScreenshot());
parent::onNotSuccessfulTest($e);
}
答案 2 :(得分:0)
要在每次不成功测试之后运行功能,可以使用:
onNotSuccessfulTest() <- Runs after each failed test.
tearDown() <- Runs after each test.
要在每次成功测试之后运行功能,可以使用:
public function tearDown()
{
if ($this->getStatus() == 0) {
// stuff to do on sucsess
}
}