【问题标题】:Disabling specific logger in pytest在 pytest 中禁用特定的记录器
【发布时间】:2019-07-12 06:33:49
【问题描述】:

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

pytest 4.6.3
蟒蛇3.7.3

感谢您的帮助!

【问题讨论】:

    标签: python logging pytest python-logging


    【解决方案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
    

    【讨论】:

    【解决方案2】:

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

    import os
    import logging
    
    
    logger = logging.getLogger('mylogger')
    
    if os.environ.get('mylogger_level'):
        logger.setLevel(os.environ.get('mylogger_level'))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-18
      • 2011-07-16
      • 1970-01-01
      • 1970-01-01
      • 2019-06-03
      • 2020-12-22
      • 1970-01-01
      相关资源
      最近更新 更多