Python 在pytest中禁用特定记录器
在我的项目中,我正在使用pdfplumber解析一些PDF文件。在测试执行(pytest)期间,我有时希望看到代码中的日志,以便进行调试。这可以通过设置Python 在pytest中禁用特定记录器,python,logging,pytest,python-logging,Python,Logging,Pytest,Python Logging,在我的项目中,我正在使用pdfplumber解析一些PDF文件。在测试执行(pytest)期间,我有时希望看到代码中的日志,以便进行调试。这可以通过设置--log cli level=DEBUG来实现。但是,这会打开来自所有代码的消息,也会打开来自pdfplumber的消息,这非常冗长,并且使调试变得困难。有没有办法在测试运行期间选择性地启用/禁用记录器 pytest 4.6.3 python 3.7.3 谢谢你的帮助 不,据我所知和所见,pytest将无法为您执行此操作。我能想到的是引入您自己
--log cli level=DEBUG
来实现。但是,这会打开来自所有代码的消息,也会打开来自pdfplumber的消息,这非常冗长,并且使调试变得困难。有没有办法在测试运行期间选择性地启用/禁用记录器
pytest 4.6.3python 3.7.3
谢谢你的帮助 不,据我所知和所见,pytest将无法为您执行此操作。我能想到的是引入您自己的环境变量并相应地更改日志级别。大概是这样的:
import os
import logging
logger = logging.getLogger('mylogger')
if os.environ.get('mylogger_level'):
logger.setLevel(os.environ.get('mylogger_level'))
默认情况下,Pytest不支持此功能,但您可以在
conftest.py
中添加自定义选项以关闭特定的记录器
import pytest
import logging
def pytest_addoption(parser):
"""Add a command line option to disable logger."""
parser.addoption(
"--log-disable", action="append", default=[], help="disable specific loggers"
)
def pytest_configure(config):
"""Disable the loggers."""
for name in config.getoption("--log-disable", default=[]):
logger = logging.getLogger(name)
logger.propagate = False
非常好的解决方案,谢谢。提出了一个关于它的问题。