在包上测试 运行 时 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
在文件夹 运行 上考虑了这一点,所以日志没有'显示导致此问题的任何测试文件。
我正在为生成日志的方法编写单元测试。我使用 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
在文件夹 运行 上考虑了这一点,所以日志没有'显示导致此问题的任何测试文件。