pytest:每个模块的选择性日志级别

时间:2018-08-29 22:34:03

标签: python logging command-line-interface pytest

我正在使用pytest-3.7.1,它对日志记录有很好的支持,包括在测试过程中实时记录到stdout。我正在使用--log-cli-level=DEBUG将所有调试级别的日志记录转储到控制台。

我遇到的问题是--log-cli-level=DEBUG为测试程序中的所有模块打开了调试日志记录,包括第三方依赖项,并且日志中充斥着许多无趣的输出

Python的日志记录模块可以设置每个模块的日志记录级别。这将启用选择性日志记录-例如,在普通的Python程序中,我可以仅对我自己的一个或两个模块打开调试,并将日志输出限制为仅这些模块,或者为每个模块设置不同的日志级别。这样可以关闭嘈杂库的调试级别日志记录。

所以我想做的就是将相同的概念应用于pytest的日志记录-即从命令行为特定的非root日志记录器指定日志记录级别。例如,如果我有一个名为test_foo.py的模块,那么我正在寻找一种从命令行为此模块设置日志级别的方法。

如有必要,我已经准备好自己动手(我知道如何在pytest中添加自定义参数),但是在此之前,我只是想确保没有解决方案。有人知道吗?

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,并在另一个answer中找到了解决方案:

使用--log-cli-level=DEBUG代替--log-level DEBUG。它会禁用所有第三方模块日志(在我的情况下,我有大量的matplotlib日志),但仍会为每次失败的测试输出您的应用日志。