如何在Python中模拟可调用实例的属性?

时间:2015-06-24 09:25:12

标签: python mocking

我有以下代码,我需要测试:

uploader = AjaxFileUploader(backend=XLSXFileUploadBackend, obj=obj)
response = uploader(request)
...
response.content

我想模拟AjaxFileUploader并将response.content替换为某个值。

我执行以下操作:

@patch('guinness.apps.home.views.AjaxFileUploader')
def test_import_asset_to_bucket(self, mock_file_uploader):
    test_content = 'a:"1"'
    mock_file_uploader.return_value = MagicMock(return_value=MagicMock(content=test_content))

有更优雅的方式吗? 谢谢!

1 个答案:

答案 0 :(得分:2)

你应该能够侥幸逃脱

mock_file_uploader.return_value.return_value.content = test_content

因为属性return_value会返回在第一次访问时创建的新Mock对象,如documentation中所述。

但是,我不确定这会更优雅。