在pytest中禁用特定的记录器

时间:2019-07-12 06:33:49

标签: python logging pytest python-logging

在我的项目中,我正在使用pdfplumber解析一些PDF文件。在执行测试期间(pytest),有时我想查看代码中的日志以进行调试。可以通过设置--log-cli-level=DEBUG来完成。但是,这会打开所有代码(也包括pdfplumber)中的消息-这非常冗长,而且调试困难。有没有办法在测试运行期间选择性地启用/禁用记录器?

pytest 4.6.3
python 3.7.3

感谢帮助!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

不,据我所知和所见,pytest将无法为您执行此操作。我能想到的是引入自己的环境变量并相应地更改日志级别。像这样:

import os
import logging


logger = logging.getLogger('mylogger')

if os.environ.get('mylogger_level'):
    logger.setLevel(os.environ.get('mylogger_level'))