【发布时间】:2017-05-26 14:47:34
【问题描述】:
我有一系列使用 python logging module 的单元/集成测试。我想测试是否在适当的时候记录了正确的事情,我可以使用mock 模块实现如下:
@mock.patch('logging.Logger.info')
但是,当我这样做时,实际的日志记录会停止(原因很明显!),这对我调试我的测试为什么工作等很有用。
我的问题如下:有什么方法可以模拟出日志调用,这样我就可以断言它们已被使用预期的参数调用但仍保留日志功能?
我目前的方法是制作一个包含 MagicMock 和未模拟记录器的包装类:
class MonkeyPatchLogger(object):
MOCK = mock.MagicMock()
@classmethod
def info(cls, *args, **kwargs):
cls.MOCK(*args, **kwargs)
logger.info(*args, **kwargs)
但这不起作用。
干杯, 杰克
【问题讨论】:
标签: python unit-testing testing logging mocking