4

例如在 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)
4

1 回答 1

9

最直接的方法是获取第一项mock.call_args_list并检查它是否被调用1

call_args_list

这是按顺序对模拟对象进行的所有调用的列表(因此列表的长度是它被调用的次数)。

assert m.call_args_list[0] == call(1)

从哪里call导入mockfrom mock import call

此外,mock_calls也可以代替call_args_list

另一种选择是使用assert_any_call()

m.assert_any_call(1)
于 2014-05-07T02:55:33.363 回答