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

dav*_*idA 6 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添加自定义参数),但是在我这样做之前,我只是想确保没有解决方案。有人知道吗?

Den*_*zov 1

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

而不是--log-cli-level=DEBUG使用--log-level DEBUG. 它禁用所有第三方模块日志(在我的例子中,我有大量的 matplotlib 日志),但仍然为每个失败的测试输出应用程序日志。

  • 谢谢,这很有用,尽管这更多的是我描述的问题的解决方法,因为它没有解决每个模块的启用/禁用功能,我认为这本身就是一个有用的功能。 (3认同)