Как assert_called_with первого вызова, если метод был вызван дважды в другом методе?
Например в 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 ответ
Решение
Самый простой подход - получить первый предмет от 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)