如何对日志文件进行单元测试?

问题描述 投票:0回答:1

我必须手动运行下面的脚本

$ python -m mylog
才能测试日志记录。

为什么

$ pytest -s
创建日志文件失败?

#mylog.py
import logging
def foobar(logfile):
    logging.basicConfig(filename=logfile, level=logging.DEBUG)
    logging.debug('This message should go to the log file')
    logging.info('So should this')
    logging.warning('And this, too')
    logging.error('And non-ASCII stuff, too, like Øresund and Malmö')
#test_mylog.py
from . import mylog
from pathlib import Path
def test_mylog():
    logfile='./mylog.log'
    mylog.foobar(logfile)
    assert Path(logfile).exists()
>>> AssertionError: assert False
python logging pytest
1个回答
0
投票

pytest
有一个内置的
logging
插件,并将
handlers
注册到它,这就是为什么你的
logging.basicConfig(filename=logfile, level=logging.DEBUG)
无法工作。

logging.basicConfig()
仅在调用之前未进行日志记录配置但
pytest
已配置
logging
时才有效。

因此,如果您想要自定义日志记录,您应该禁用内置

pytest
logging
配置。

您可以通过多种方式做到这一点,但一种简单的方法是当您在终端中调用

pytest
时:

pytest -p no:logging
© www.soinside.com 2019 - 2024. All rights reserved.