1
如何測試python函數被調用,而不改變它的行爲?檢查函數是否在不改變其行爲的情況下被調用
有很多相關的帖子,但我找不到他們中的一個,涵蓋了一切:
- How to test that a function is called within a function with nosetests變化(行爲)
- Patching a method without changing how the method works?(帶參數不起作用和返回值)
基本上,我只是需要監視函數來知道它是否被調用。
例如,下面的代碼片段具有非常令人驚訝的行爲
from unittest.mock import patch
def func(a,b):
print('was called')
return a * b
with patch('test.func') as patched_function:
print(func(4,5))
print(patched_function.called)
輸出:
<MagicMock name='func()' id='1721737249456'>
True
was called
20
False
雖然我只是期待
was called
20
True
使用您在第一次調用設置爲TRUE;一個全局變量? –
如果'func'在一個你不能修改的模塊內,這幾乎總是你在修補時要查找的內容 – Overdrivr
你也可以使用一個全局變量作爲計數器的次數一個函數被調用。例如:'def func(i):i + = 1' –