我有一系列使用python logging module
的單元/集成測試。我想測試正確的事情都記錄在適當的時候,我可以用mock
模塊如下實現:Python嘲笑日誌記錄,同時保留日誌輸出
@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)
,但是這是行不通的。
乾杯, 傑克