Вызов метода объекта MagicMock возвращает другой объект MagicMock.
>>> from unittest.mock import MagicMock
>>> mock = MagicMock()
>>> a = mock.foo('A', 1)
>>> a
<MagicMock name='mock.foo()' id='50553184'>
Возможно ли получить параметры вызова ('A', 1
в моем примере) из возвращенного объекта?
Возвращенный объект не был вызван (был только его родитель), поэтому все эти *call*
методы и свойства, такие как called
, assert_called()
или mock_calls
, не могут использоваться.
>>> del mock
>>> a
<MagicMock name='mock.foo()' id='50553184'>
>>> a.called
False
>>> a.mock_calls
[]
>>>
В моей программе трудно получить доступ к родительскому макету, поскольку это уже сотый дочерний элемент оригинального объекта MagicMock, который я создал. Я считаю, что утверждения в возвращаемом объекте более убедительны, чем поиск родительского объекта в иерархии, поскольку это может привести к проверке другого вызова.