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' –