在包上测试 运行 时 pytest caplog 为空

pytest caplog empty when tests run on package

我正在为生成日志的方法编写单元测试。我使用 pytest 的 caplog 检查日志输出,虽然它在我 运行 模块上工作时像:pytest module_name.py,但当我 运行 pytest 包 [=15] 时它失败了=] 并且 caplog 为空。
请注意,logger.propagate 设置为 True

下面我的测试方法:

def test_correctly_mark_email_as_seen(mocker, caplog):
    mailbox = mocker.MagicMock()
    message = mocker.MagicMock()
    caplog.set_level(logging.INFO)
    mark_email_as_seen(mailbox, message)
    assert '::mark_email_as_seen, email marked as seen' in caplog.text

失败消息:

>       assert '::mark_email_as_seen, email marked as seen' in caplog.text
E       AssertionError: assert '::mark_email_as_seen, email marked as seen' in ''
E        +  where '' = <_pytest.logging.LogCaptureFixture object at 0x10c88f580>.text

tests/test_email.py:12: AssertionError

我的其他测试工作正常运行将它们安装在包或模块上。

尝试在设置级别时指定记录器名称。

caplog.set_level(logging.INFO, logger="YOUR_LOGGER_NAME")

我在不需要日志的测试文件中指定了记录器级别,显然 pytest 在文件夹 运行 上考虑了这一点,所以日志没有'显示导致此问题的任何测试文件。