如何从PHPUnit测试用例中进行日志记录?

时间:2012-11-21 09:58:29

标签: php logging phpunit

从PHPUnit测试用例打印日志语句的最佳做法是什么?

我正在运行selenium测试用例,并希望打印出类似"登录已完成"," Page XY打开"。

我希望在我想要的任何日志文件中看到这些内容。如果您可以定义日志级别,那就太好了。

2 个答案:

答案 0 :(得分:7)

我建议您使用Selenium Server Logging。它将为您提供您可能需要的所有调试信息。

如果它不是您的选项而您仍想从PHPUnit测试用例进行登录,则有3个选项:

  1. 使用内置日志记录功能(documentation),可以通过phpunit.xml文件或命令行参数(documentation)配置;
  2. 通过实施PHPUnit_Framework_TestListener界面来创建您自己的记录器,这种界面有限,因为它只支持您可以记录的有限数量的事件,例如startTestendTest,{ {1}},addError等。有关受支持事件的完整列表,请参阅(documentation)。您可以在实现中添加更多事件,但这也需要您通过继承addFailure类(documentation)或实现PHPUnit_Framework_TestSuite::run()来覆盖PHPUnit_Extensions_TestDecorator方法界面(documentation)。
  3. 最简单,最灵活的选择是继承PHPUnit_Framework_Test类并在那里实现日志记录功能。这将允许您从测试方法中进行记录。(documentation

答案 1 :(得分:4)

您可以实现一个测试监听器,在phpunit.xml.dist中指定它,并根据需要执行任何操作(Monolog很受欢迎)请参阅the documentation以获得更好的写入和示例我可以写下我的头脑。

如果要在测试方法中指定消息,可以让测试继承自添加日志方法的公共类。并在那里做任何你想做的事。我不喜欢这个解决方案,但它肯定是一个选择。