在测试执行期间更改日志记录级

时间:2017-08-09 21:23:42

标签: python logging python-unittest

我有一个应用程序,我在其中介绍了标准日志记录库,我只是将其设置为警告。

在运行unittesting时,我想避免出现那些错误和警告(仅仅是因为我故意制作它们!),但我想保持单一测试的详细信息。

我有没有办法让标准应用程序具有日志记录级别(警告)并且在测试期间使用另一个(无或关键?)

例如,我希望我的应用程序在正常操作模式下显示以下内容:

=====
Application started
ERROR = input file is wrong
=====

然而,在运行我的单元测试时,我不希望出现任何这些输出,因为我实际上会使应用程序无法检查正确的错误跟踪,因此显示错误消息将是多余的,实际上会使检测变得复杂问题。

期待stackoverflow我发现了一些类似的问题,但没有解决我的问题:

  • 问题在于打印,而不是记录

Is there a way to suppress printing that is done within a unit test?

  • 只是消除部分测试详细程度

Turn some print off in python unittest

任何想法/帮助?

1 个答案:

答案 0 :(得分:1)

我仍然不是100%肯定 - 我认为您想要的是在您的应用中使用日志语句在测试期间被抑制。

我会使用Nosetests - 它会抑制所有传递测试的stdout并将其打印为失败测试,​​这对我的用例来说非常完美。

一个不太好的解决方案,以防万一我不理解你,是定义一个测试用例类,你的所有测试都继承了它 - 它可以有额外的测试方法或其他(它应该继承自unittest)。 TestCase本身)。关键是,您可以将日志记录级别更改为该文件中的更高/更低级别,该级别仅在测试期间导入,这将允许您在测试期间具有特殊的日志记录行为。

鼻子的行为虽然是最好的 - 它仍然会在失败的测试中显示输出并捕获打印语句。