用 pytest 模拟 __call__ 方法

问题描述 投票:0回答:1

我正在尝试模拟模拟对象的

__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__
方法。

我该怎么做才能在这两种情况下获得相同的行为?

mocking pytest
1个回答
0
投票

我能做的就是:

from pytest import Mock
mock_output = "mock"
my_mock = Mock(return_value=mock_output)

但是我当然不是在嘲笑这种情况下的

__call__
方法。

© www.soinside.com 2019 - 2024. All rights reserved.