Pytest 的 `caplog` 返回空文本

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

我试图在测试套件中的函数期间测试信息级日志文本。

我的功能大约是(在 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

我预计它会过去。

testing pytest caplog
1个回答
0
投票

这可能就是您想要做的

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
© www.soinside.com 2019 - 2024. All rights reserved.