php – Selenium不会显示失败的数字行

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – Selenium不会显示失败的数字行脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我让Selenium服务器在MamP本地服务器上使用 PHPUnIT.

当Assert失败时,失败的数字行没有显示,而是我看到一个PHPunit数字行.

当我执行“仅PHPunit”测试时,我可以看到失败断言的数字行.

PHPUnit只测试

$cd '/Applications/MAMP/htdocs/my-client/tests' && PHPunit -c 'PHPunit.XMl'  '/Applications/MAMP/htdocs/my-client/tests/controllers/homeTest.PHP'
PHPUnit 3.6.10 by Sebastian Bergmann.

Configuration read From /Applications/MAMP/htdocs/my-client/tests/PHPunit.xML

.

Time: 0 seconds,Memory: 8.00Mb

There was 1 failure:

1) HomeTest::test_get_sections
Failed asserting that Array (
    blah,blah,blah
    )
) is identical to Array (blah,blah2
    )
).

/Applications/MAMP/htdocs/my-client/tests/controllers/homeTest.PHP:56
/Applications/MAMP/bin/PHP/PHP5.3.6/bin/PHPunit:46

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

PHPUnit Selenium测试

$cd '/Applications/MAMP/htdocs/my-client/tests' && PHPunit -c 'PHPunit.xml'  

'/Applications/MAMP/htdocs/my-client/tests/views/af_web_Test.PHP'
PHPUnit 3.6.10 by Sebastian Bergmann.

Configuration read from /Applications/MAMP/htdocs/my-client/tests/PHPunit.xml

E

Time: 2 seconds,Memory: 8.75Mb

There was 1 error:

1) af_web_Test::test_crear_una_af_nueva_y_validar_el_valor_por_defecto_de_los_Campos
current URL: http://localhost:8888/my-client/index.PHP/home/view

Failed asserting that '' matches PCRE pattern "/0/".

/Applications/MAMP/bin/PHP/PHP5.3.6/bin/PHPunit:46

FAILURES!
Tests: 1,Assertions: 6,Errors: 1.

解决方法

我遇到了同样的问题(虽然在LAMP服务器上),因为我非常依赖这些行号和屏幕截图来确定我的测试中究竟出了什么问题.这个错误,我认为是这个,显然是报道的.请参阅 https://github.com/sebastianbergmann/phpunit-selenium/issues/81以供参考.

作为临时解决方法,我强制将行号放入正在抛出的异常中的错误消息中(因为行号当然可以在跟踪中找到).作为副作用,大多数异常都是重新抛出的,我只抛出PHPUnit_Framework_Error,但至少我得到了输出中的行号.作为一个临时的解决方法,直到修复,这对我有用.

为此,我使用自己的SeleniumTestCase扩展PHPUnit_extensions_SeleniumTestCase,并将这些函数放入其中:

这个功能的略微修改版本供我自己使用:https://stackoverflow.com/a/6608751

PRotected function dumpStack(Exception $e) {
    $stack = '';
    foreach ($e->getTrace() as $trace) {
        if (isset($trace['file'])        &&
            isset($trace['line'])        &&
            isset($trace['class'])       &&
            isset($trace['function']))
        {
            $stack .= PHP_EOL .
                $trace['file']     . ':' .
                $trace['line']     . ' ' .
                $trace['class']    . '::' .
                $trace['function'];
        }
    }
    return $stack;
}

我从PHPUnit_Extensions_SeleniumTestCase覆盖onNotSuccessfulTest:

protected function onNotSuccessfulTest(Exception $e) {
    try {
        parent::onNotSuccessfulTest($e);
    }
    catch (PHPUnit_Framework_IncompleteTestError $e) {
        // Don't do anything with the incomplete test exception
        throw $e;
    }
    catch (PHPUnit_Framework_SkipPEdTestError $e) {
        // Don't do anything with the skipped test exception
        throw $e;
    }
    catch (Exception $e_parent) {
        // Include line number for specific test file in error
        $error_msg = chr(10).chr(10).$this->dumpStack($e);

        throw new PHPUnit_Framework_Error($e_parent->getMessage().$error_msg,$e_parent->getCode(),$e_parent->getFile(),$e_parent->getLine(),$e_parent->getTrace());
     }
}

我不喜欢这个黑客,所以如果有人有更好的解决方案,我会很高兴听到它!

更新:我最初忘了提到这一点:你当然必须让测试扩展你自己的自定义SeleniumTestCase,而不是PHPUnit_Extensions_SeleniumTestCase.

脚本宝典总结

以上是脚本宝典为你收集整理的php – Selenium不会显示失败的数字行全部内容,希望文章能够帮你解决php – Selenium不会显示失败的数字行所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。