我试图在测试套件中的函数期间测试信息级日志文本。
我的功能大约是(在 main.py 中):
import logging
log = logging.getLogger()
log.setLevel(os.environ.get('LOGGING_LEVEL', 'INFO'))
def _get_item(var: str):
item = other_function.get_item(var)
return item
我的测试看起来像(在tests/test_logging.py中):
import logging
import main
def test__processing(caplog):
caplog.set_level(logging.INFO, main.__name__)
item = main._get_item('variable')
assert 'log output expected from main._get_item' in caplog.text
然后,我的测试失败并出现错误:
FAILED tests/test_logging.py::test__processing - AssertionError: assert 'log output expected from main._get_item' in ''
我不太明白我在这里做错了什么以及为什么 caplog 返回空。我该如何解决这个问题?
我也尝试过:
with caplog.at_level(logging.INFO, main.name)
item = main._get_item('variable')
assert 'log output expected from main._get_item' in caplog.text
我预计它会过去。
这可能就是您想要做的
import os
import logging
log = logging.getLogger()
log.setLevel(os.environ.get('LOGGING_LEVEL', 'INFO'))
def get_item(v):
log.info(v)
def _get_item(var: str):
item = get_item(var)
return item
def test__processing(caplog):
caplog.set_level(logging.INFO, logger=__name__)
item = _get_item('variable')
assert 'variable' in caplog.text