如何捕获SeleniumPHPUnit测试运行时发生的php错误?

如何捕获SeleniumPHPUnit测试运行时发生的php错误?,php,testing,selenium,phpunit,Php,Testing,Selenium,Phpunit,我用的是apache2,硒,PHPUnit 有些测试会导致php错误,但通过了,因为从浏览器上看一切都很好 如何捕获这些错误以将测试标记为失败?PHPUnit允许添加在每个测试函数之前或之后运行的检查。只需在测试中添加一个AssertPremissions()或assertPostConditions(),看看是否有PHP失败的痕迹 有关更多详细信息,请参阅 现在的问题是:如何检测这些错误?要么检查屏幕上是否有错误文本,要么(如果您在apache本地运行)检查php错误日志文件的大小是否增加了—

我用的是apache2,硒,PHPUnit

有些测试会导致php错误,但通过了,因为从浏览器上看一切都很好


如何捕获这些错误以将测试标记为失败?

PHPUnit允许添加在每个测试函数之前或之后运行的检查。只需在测试中添加一个
AssertPremissions()
assertPostConditions()
,看看是否有PHP失败的痕迹

有关更多详细信息,请参阅


现在的问题是:如何检测这些错误?要么检查屏幕上是否有错误文本,要么(如果您在apache本地运行)检查php错误日志文件的大小是否增加了—不应该增加。这在很大程度上取决于您的需要。

PHPUnit允许添加在每个测试函数之前或之后运行的检查。只需在测试中添加一个
AssertPremissions()
assertPostConditions()
,看看是否有PHP失败的痕迹

有关更多详细信息,请参阅


现在的问题是:如何检测这些错误?要么检查屏幕上是否有错误文本,要么(如果您在apache本地运行)检查php错误日志文件的大小是否增加了—不应该增加。这在很大程度上取决于您的需要。

最好的方法是让PHP在出错时抛出
ErrorException
s

set_error_handler(
    function($err_severity, $err_msg, $err_file, $err_line) { 
        throw new ErrorException($err_msg, 0, $err_severity, $err_file, $err_line) 
    }
);

由于错误总是致命的,因此当出现错误时,测试默认会失败(请注意,如果不断言/捕获异常,它将停止测试的其余部分)。

最好的方法是让PHP在出现错误时抛出
ErrorException
s

set_error_handler(
    function($err_severity, $err_msg, $err_file, $err_line) { 
        throw new ErrorException($err_msg, 0, $err_severity, $err_file, $err_line) 
    }
);

由于错误总是致命的,因此当出现错误时,默认情况下测试将失败(请注意,如果不断言/捕获异常,它将停止测试的其余部分)。

我正在寻找一种更简单的方法来获取错误。1.检查页面上的错误——不是很好的解决方案:您必须检查每个页面,ajax响应不会显示错误。检查error.log可能会导致用户访问问题。而且很难只获取当前错误。或者您可以使用
set\u error\u handler
触发某种标志,或者抛出一个ErrorException。我假设您已经设置了专用的测试系统。该系统将根据测试需要进行配置。如果需要显示错误,请进行配置。这也会影响ajax。此外,您还可以配置对错误日志的访问权限。当您只在该系统上运行测试时,只有测试会影响日志。除此之外,您还应该进行一些单元测试,以便在那里检测到PHP错误(如通知和警告)-另一方面,如果您得到一个不影响网站的内部警告,它并没有真正被破坏,是吗?我正在寻找一种更容易获得错误的方法。1.检查页面上的错误——不是很好的解决方案:您必须检查每个页面,ajax响应不会显示错误。检查error.log可能会导致用户访问问题。而且很难只获取当前错误。或者您可以使用
set\u error\u handler
触发某种标志,或者抛出一个ErrorException。我假设您已经设置了专用的测试系统。该系统将根据测试需要进行配置。如果需要显示错误,请进行配置。这也会影响ajax。此外,您还可以配置对错误日志的访问权限。当您只在该系统上运行测试时,只有测试会影响日志。除此之外,您还应该进行一些单元测试,以便在那里检测到PHP错误(如通知和警告)-另一方面,如果您得到一个不影响网站的内部警告,它实际上并没有被破坏,是吗?错误可能会出现在页面末尾,测试将通过。此外,我已经在使用这种方法:^)。错误可能会出现在页面末尾,测试将通过。此外,我已经在使用这种方法:^)。