Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在pytest中禁用特定记录器_Python_Logging_Pytest_Python Logging - Fatal编程技术网

Python 在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将无法为您执行此操作。我能想到的是引入您自己

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

pytest 4.6.3
python 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

非常好的解决方案,谢谢。提出了一个关于它的问题。