如果在另一个方法中调用了两次方法,如何使用第一次调用assert_called_?

时间:2014-05-07 02:50:41

标签: python magicmock

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

1 个答案:

答案 0 :(得分:4)

最直接的方法是从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)