Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中模拟可调用实例的属性?_Python_Mocking - Fatal编程技术网

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

如何在Python中模拟可调用实例的属性?,python,mocking,Python,Mocking,我有以下代码需要测试: uploader = AjaxFileUploader(backend=XLSXFileUploadBackend, obj=obj) response = uploader(request) ... response.content 我想模拟AjaxFileUploader并用一些值替换response.content 我做了以下工作: @patch('guinness.apps.home.views.AjaxFileUploader') def test_impor

我有以下代码需要测试:

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))
还有更优雅的方式吗?
谢谢

你只要做一件事就应该能够逃脱惩罚

mock_file_uploader.return_value.return_value.content = test_content
因为属性
return\u value
返回第一次访问时创建的新
Mock
对象,如中所述

不过,我不确定这是否更优雅