例如在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)
答案 0 :(得分:4)
最直接的方法是从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)