例如在 t.py
def a(obj):
print obj
def b():
a(1)
a(2)
然后:
from t import b
with patch('t.a') as m:
b()
m.assert_called_with(1)
我得到:
AssertionError: Expected call: a(1)
Actual call: a(2)
最直接的方法是获取第一项mock.call_args_list
并检查它是否被调用1
:
call_args_list
这是按顺序对模拟对象进行的所有调用的列表(因此列表的长度是它被调用的次数)。
assert m.call_args_list[0] == call(1)
从哪里call
导入mock
:from mock import call
。
此外,mock_calls
也可以代替call_args_list
。
另一种选择是使用assert_any_call()
:
m.assert_any_call(1)