在测试执行期间更改日志记录级别
Change logging level during testing execution
我有一个应用程序,其中引入了标准日志记录库,我只是将其设置为警告。
当 运行 单元测试时,我想避免出现这些错误和警告(只是因为我故意制造它们!),但我想避免单元测试的冗长。
有什么方法可以使标准应用程序具有日志记录级别(警告)并在测试期间使用不同的日志级别(none 或严重?)
例如,我希望我的应用程序在正常操作模式下显示以下内容:
=====
Application started
ERROR = input file is wrong
=====
但是,当 运行 我的单元测试时,我不希望出现任何这些输出,因为我实际上会使应用程序无法检查正确的错误跟踪,因此显示错误将是多余的消息,实际上会使检测问题复杂化。
查看 Whosebug 我发现了一些类似的问题,但没有解决我的问题:
- 问题出在打印上,而不是记录
Is there a way to suppress printing that is done within a unit test?
- 只是消除了部分测试冗长
Turn some print off in python unittest
任何idea/help?
我仍然不是 100% 确定 - 我认为您想要的是在您的应用程序中包含在测试期间被抑制的日志语句。
我会为此使用 Nosetests - 它会抑制所有通过测试的标准输出,并在失败时打印它,在我看来,这对于您的用例来说几乎是完美的。
一个不太好的解决方案,以防万一我不明白你的意思,就是定义一个测试用例 class,你的所有测试都继承自它 - 它可以有额外的测试方法或其他任何东西(它应该从 unittest.TestCase 本身继承)。但关键是您可以在该文件中将日志记录级别更改为 higher/lower 级别,该文件仅在测试期间导入,这将允许您在测试期间具有特殊的日志记录行为。
虽然 nose 的行为是最好的 - 它仍然显示失败测试的输出并捕获打印语句。
我有一个应用程序,其中引入了标准日志记录库,我只是将其设置为警告。
当 运行 单元测试时,我想避免出现这些错误和警告(只是因为我故意制造它们!),但我想避免单元测试的冗长。
有什么方法可以使标准应用程序具有日志记录级别(警告)并在测试期间使用不同的日志级别(none 或严重?)
例如,我希望我的应用程序在正常操作模式下显示以下内容:
=====
Application started
ERROR = input file is wrong
=====
但是,当 运行 我的单元测试时,我不希望出现任何这些输出,因为我实际上会使应用程序无法检查正确的错误跟踪,因此显示错误将是多余的消息,实际上会使检测问题复杂化。
查看 Whosebug 我发现了一些类似的问题,但没有解决我的问题:
- 问题出在打印上,而不是记录
Is there a way to suppress printing that is done within a unit test?
- 只是消除了部分测试冗长
Turn some print off in python unittest
任何idea/help?
我仍然不是 100% 确定 - 我认为您想要的是在您的应用程序中包含在测试期间被抑制的日志语句。
我会为此使用 Nosetests - 它会抑制所有通过测试的标准输出,并在失败时打印它,在我看来,这对于您的用例来说几乎是完美的。
一个不太好的解决方案,以防万一我不明白你的意思,就是定义一个测试用例 class,你的所有测试都继承自它 - 它可以有额外的测试方法或其他任何东西(它应该从 unittest.TestCase 本身继承)。但关键是您可以在该文件中将日志记录级别更改为 higher/lower 级别,该文件仅在测试期间导入,这将允许您在测试期间具有特殊的日志记录行为。
虽然 nose 的行为是最好的 - 它仍然显示失败测试的输出并捕获打印语句。