Вы можете сделать это, потому что аргументы передаются фиктивному объекту. Это должно работать:
@patch("file1.Object")
class TestFile:
def test_call(self, obj):
method()
obj.assert_called_once_with("param1")
obj.return_value.do_something.assert_called_once_with("param2")
obj.return_value
- это экземпляр Object
(который представляет собой объект MagickMock
с Object
spe c), а do_something
- еще один макет в этом объект, который вызывается с заданным параметром.
Пока вы просто передаете аргументы фиктивным объектам, макет будет записывать это, и вы можете его проверить. Чего у вас нет, так это каких-либо побочных эффектов от реальных вызовов функций - поэтому, если исходный do_something
вызовет другую функцию, это нельзя проверить.
EDIT : I hadn ' Прочтите второй ответ правильно - он также правильно отвечает на вопрос. Так что это скорее поправка к этому ответу ...