gpt4 book ai didi

python - 如何修补/模拟 logging.getlogger()

转载 作者:IT老高 更新时间:2023-10-28 20:49:23 26 4
gpt4 key购买 nike

我有这段代码要测试:

log = logging.getLogger(__name__)


class A(object):
def __init__(self):
log.debug('Init')

但我不知道如何断言 log.debug 是用 'Init' 调用的

我尝试修补记录器,但检查它我只发现了一个 getLogger 模拟。

我确定它很简单,但我就是想不通!

提前感谢您的任何帮助!

最佳答案

您可以在实际的日志记录对象上使用 patch.object()。这可以让您验证您是否也在使用正确的记录器:

logger = logging.getLogger('path.to.module.under.test')
with mock.patch.object(logger, 'debug') as mock_debug:
run_code_under_test()
mock_debug.assert_called_once_with('Init')

或者,如果您使用的是 Pytest,那么它已经有一个夹具可以为您捕获日志:

def test_bar(caplog):
with caplog.at_level(logging.DEBUG):
run_code_under_test()
assert "Init" in caplog.text
# or, if you really need to check the log-level
assert caplog.records[-1].message == "Init"
assert caplog.records[-1].levelname == "DEBUG"

更多信息见 pytest docs on logging

关于python - 如何修补/模拟 logging.getlogger(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18901360/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com