在python中模拟类对象返回方法
我想模拟一个方法,在我的模拟类中返回一个测试值。我遇到的问题不是返回测试值,而是mock方法返回MagicMock类型的对象 这段代码很做作,但说明了这个问题 SuT(SuT.py): 测试(mocking.py):在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
你被你的链式作业弄糊涂了:
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