我正在尝试模拟模拟对象的
__call__
方法,以便当我将此对象称为 object()
时它会返回某个值。到目前为止我的代码是:
from pytest import Mock
my_mock = Mock()
mock_output = "mock"
my_mock.__call__ = Mock(return_value=mock_output)
问题在于:
my_mock.__call__() # prints "mock"
my_mock() # prints "<Mock name='mock()' id='140016400530976'>"
但在我测试的代码中,我使用第二种方式调用
__call__
方法。
我该怎么做才能在这两种情况下获得相同的行为?
我能做的就是:
from pytest import Mock
mock_output = "mock"
my_mock = Mock(return_value=mock_output)
但是我当然不是在嘲笑这种情况下的
__call__
方法。