PHPUnit Селен captureScreenshotOnFailure не работает?
Я использую PHPUnit 3.4.12 для проведения своих тестов на селен. Я хотел бы иметь возможность автоматически делать скриншот, когда тест не проходит. Это должно быть поддержано, как объяснено в http://www.phpunit.de/manual/current/en/selenium.html#selenium.seleniumtestcase.examples .WebTest2.php
class WebTest
{
protected $captureScreenshotOnFailure = true;
protected $screenshotPath = 'C:\selenium';
protected $screnshotUrl = 'http://localhost/screenshots';
public function testLandingPage($selenium)
{
$selenium->open("http://www.example.com");
$selenium->fail("fail");
...
}
}
Как вы можете видеть, я проваливаю тест, и теоретически, когда это произойдет, он должен сделать снимок экрана и поместить его в C:\selenium, так как я запускаю RC-сервер selenium на Окна.
Однако, когда я выполню тест, он просто даст мне следующее:
[root@testbox selenium]$ sh run
PHPUnit 3.4.12 by Sebastian Bergmann.
F
Time: 8 seconds, Memory: 5.50Mb
There was 1 failure:
1) WebTest::testLandingPage
fail
/home/root/selenium/WebTest.php:32
FAILURES!
Tests: 1, Assertions: 0, Failures: 1.
Я не вижу никакого скриншота в C:\selenium . Однако я могу получить скриншот с $selenium->CaptureScreenshot("C:/selenium/image.png ");
Любые идеи или предложения приветствуются.
Спасибо
3 answers
Обработка ошибок этого довольно плохая со стороны phpunit; если все не идеально, он будет молча игнорировать другие ваши варианты без предупреждения.
Как упоминал Дейв, если какая-либо из переменных написана с ошибкой, она не будет работать в автоматическом режиме, и вы также можете попробовать назначить их экземпляру в вашей настройке.
Кроме того, не каждое условие вызывает снимок экрана. Попробуйте $selenium->asserttextpresent("foobarbaz") вместо вашего $selenium->fail() для проверки на вменяемость.
Вы можете попробовать добавить эти строки кодов
try { $this->assertTrue($this->isTextPresent("You searched for \"Brakes\" (2 matches)")); } catch (PHPUnit_Framework_AssertionFailedError $e) { array_push($this->verificationErrors, $e->toString()); $this->drivers[0]->captureEntirePageScreenshot($this->screenshotPath . DIRECTORY_SEPARATOR . rawurlencode($this->getLocation()) . '.png'); }
Недавно у меня была эта ошибка, потому что я следовал учебнику.
Первый пример в документации предназначен для PHPUnit_Extensions_Selenium2TestCase
. Все остальные на этой странице предназначены для PHPUnit_Extensions_SeleniumTestCase
.
Возможно, изменить
extends PHPUnit_Extensions_Selenium2TestCase
До
extends PHPUnit_Extensions_SeleniumTestCase