在python中模拟类对象返回方法

在python中模拟类对象返回方法,python,python-unittest,python-mock,Python,Python Unittest,Python Mock,我想模拟一个方法,在我的模拟类中返回一个测试值。我遇到的问题不是返回测试值,而是mock方法返回MagicMock类型的对象 这段代码很做作,但说明了这个问题 SuT(SuT.py): 测试(mocking.py): 你被你的链式作业弄糊涂了: sut.get_provider = MagicMock(name='get_provider').return_value = provider_mock 该赋值将provider\u mock绑定到sut.get\u provider和MagicM

我想模拟一个方法,在我的模拟类中返回一个测试值。我遇到的问题不是返回测试值,而是mock方法返回MagicMock类型的对象

这段代码很做作,但说明了这个问题

SuT(SuT.py):

测试(mocking.py):


你被你的链式作业弄糊涂了:

sut.get_provider = MagicMock(name='get_provider').return_value = provider_mock
该赋值将
provider\u mock
绑定到
sut.get\u provider
MagicMock(name='get\u provider')。返回值

换句话说,它基本上是这样做的:

sut.get_provider = provider_mock
MagicMock(name='get_provider').return_value = provider_mock
那不是你想要的。现在
sut.get\u provider
调用
provider\u mock
并返回一个新的
MagicMock
对象,而不是原始的
provider\u mock
对象

将作业分开:

sut.get_provider = MagicMock(name='get_provider')
sut.get_provider.return_value = provider_mock

非常感谢-你说的对-我遇到了一些麻烦-我花了很多时间使用c#和java中的模拟框架-仍然在思考python。
sut.get_provider = provider_mock
MagicMock(name='get_provider').return_value = provider_mock
sut.get_provider = MagicMock(name='get_provider')
sut.get_provider.return_value = provider_mock