5

我正在使用 PHPUnit 和 Selenium 2 对我的 Web 应用程序进行一些集成测试。我希望每次测试失败时都保存一个屏幕截图。这是我到目前为止所拥有的:

<?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 在每次测试失败后自动运行一个函数?

谢谢

4

3 回答 3

9

尝试使用该方法tearDown()onNotSuccessfulTest()

http://phpunit.de/manual/current/en/fixtures.html

于 2013-10-03T12:23:30.287 回答
5

添加到 Ricardo Simas 的答案中,如果您确实实现了 onNotSuccessfulTest 方法,请确保您调用父级,否则默认错误处理行为将停止发生。

我想知道为什么当明显存在错误条件(未找到元素)时我的测试通过了。

例如,我已将其放在所有测试用例的祖先类中:

public function onNotSuccessfulTest($e){
    file_put_contents(__DIR__.'/../../out/screenshots/screenshot1.png', $this->currentScreenshot());

    parent::onNotSuccessfulTest($e);
}
于 2014-09-19T06:23:58.423 回答
0

要在每次不成功的测试后运行一个函数,您可以使用:

onNotSuccessfulTest()    <- Runs after each failed test.
tearDown()               <- Runs after each test.

要在每次成功测试后运行函数,您可以使用:

public function tearDown()
{
    if ($this->getStatus() == 0) {
        // stuff to do on sucsess
    } 
} 
于 2019-06-26T06:14:30.937 回答