Python 单元测试中的Mock response.text

Python 单元测试中的Mock response.text,python,unit-testing,Python,Unit Testing,我正试图从API获得以下代码的响应。我得到结果并将其打印为response.text。同样,我尝试编写单元测试。我能够用JSON内容模拟API响应。但在运行单元测试时,我得到如下错误 AttributeError: 'dict' object has no attribute 'text' 代码: 已尝试的单元测试代码: from get_api import get_call from mock import patch import os import sys import json te

我正试图从API获得以下代码的响应。我得到结果并将其打印为
response.text
。同样,我尝试编写单元测试。我能够用JSON内容模拟API响应。但在运行单元测试时,我得到如下错误

AttributeError: 'dict' object has no attribute 'text'
代码:

已尝试的单元测试代码:

from get_api import get_call
from mock import patch
import os
import sys
import json
testdir = os.path.dirname(__file__)
sys.path.insert(0, os.path.abspath(os.path.join(testdir)))


resp = {
  "success": True,
  "message": "Data exist",
  "data": []
 }
response = json.dumps(resp)
newresponse = json.loads(response)

@patch('get_api.requests.get')
def test_get_call(get):
   get.side_effect = [newresponse]
   get_call()

您正在模拟
请求。get
生成
dict
,而不是
text
属性是
dict
的JSON编码的对象

get.return_value.text = response

您没有显示测试,因此不可能说出它有什么问题,除此之外,您的模拟将返回一个元组,而不是真实的或测试加倍响应对象。打个招呼。不管它值多少钱,我在过去已经用过这种方法了。@jornsharpe我已经包含了经过测试的单元测试代码
get.return_value.text = response