gpt4 book ai didi

testing - 如何在测试失败时使用 PHPUnit 和 Selenium2 进行截图?

转载 作者:行者123 更新时间:2023-11-28 19:50:54 25 4
gpt4 key购买 nike

我在 PhantomJS 中使用 PHPUnit 4.6 和 PHPUnit Selenium 1.4.2。当 selenium 测试失败时,我想捕获最后一页的屏幕截图。在 PHPUnit Manual有一个 Selenium 1 的示例,但我正在尝试使用 Selenium 2,因为我需要使用 GhostDriver。

WebTestCase.php

class WebTestCase extends PHPUnit_Extensions_Selenium2TestCase
{
protected $captureScreenshotOnFailure = TRUE;
protected $screenshotPath = '/../../screenshots';
protected $screenshotUrl = 'http://localhost:8080/screenshots';

protected function setUp() {
$this->setBrowser('phantomjs');
$this->setBrowserUrl("http://localhost:8080");
$this->setHost('localhost');
}
}

测试.php

class Test extends WebTestCase
{

public function testTitle()
{
$this->url('');
assertEquals($this->title(), "My App");
}
}

但这不能捕获屏幕截图。

$ vendor/bin/phpunit 
PHPUnit 4.6-ge85198b by Sebastian Bergmann and contributors.

Configuration read from /MyApp/phpunit.xml

F

Time: 231 ms, Memory: 5.50Mb

There was 1 failure:

1) Test::testTitle
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-''
+'My App'

/MyApp/tests/functional/Test.php:7

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

最佳答案

嗯。 SeleniumTestCase 和 Selenium2TestCase 之间的区别并没有很好地记录在 PHPUnit 手册中。此外,对于 Selenium2 上的常见情况,没有明确的区分,也没有足够的使用示例。

$captureScreenshotOnFailure 不存在于 PHPUnit_Extensions_Selenium2TestCase .

无论如何,让我们试着把它放在一起:

<?php
class Test extends PHPUnit_Extensions_Selenium2TestCase
{

protected function setUp() {
$this->setBrowser('phantomjs');
$this->setBrowserUrl("http://localhost:8080");
$this->setHost('localhost');
}

public function testEnterText()
{
$this->url("/");

try {

$this->assertEquals($this->title(), "My App");

} catch (Exception $e) {

$this->screenshot( __DIR__.'/'.$this->getName().'-'.time(). '.png');
}
}

public function screenshot($file)
{
$filedata = $this->currentScreenshot();
file_put_contents($file, $filedata);
}
}

try-catch-block:在try部分进行断言,如果断言失败则捕获异常。 catch block 让我们有机会(获取异常的详细信息或重新抛出它或)制作屏幕截图。

主要函数是$this->currentScreenshot(),本次测试用到了 https://github.com/giorgiosironi/phpunit-selenium/blob/master/Tests/Selenium2TestCaseTest.php#L733

截图监听器

请注意周围有一个 ScreenshotListener,它可能值得一看: https://github.com/giorgiosironi/phpunit-selenium/blob/master/PHPUnit/Extensions/Selenium2TestCase/ScreenshotListener.php

使用示例在 https://github.com/giorgiosironi/phpunit-selenium/blob/master/Tests/Selenium2TestCase/ScreenshotListenerTest.php

这可能是一个更清晰的实现,可以捕获测试失败并进行拍摄。

关于testing - 如何在测试失败时使用 PHPUnit 和 Selenium2 进行截图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28298760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com