【发布时间】:2020-06-14 20:31:32
【问题描述】:
我正在尝试测试的函数返回 list of strings:
def listForumsIds:
response = requests.get(url)
forums= response.json().get('forums')
forumsIds= [forum['documentId'] for forum in forums]
# return like: ['id1', 'id2', 'id3'.....]
return forumsIds
我的测试功能:
@requests_mock.mock()
def test_forms(self, m):
# I also used json='response'
m.get('valid url', text="response", status_code=200)
resp = listForumsIds('valid url')
# ERROR !!!!
assert resp == "response"
我收到如下错误:json.decoder.JSONDecodeError 或 str object has no attribute get
如何伪造我的响应以匹配我的函数的返回值?
【问题讨论】:
-
@hoefling 不,它不是类似的,基本上我如何告诉模拟我的请求返回不会只是 text='text' 或只是 json='response',它是我的 json 对象将获取论坛标题并在其中获取所有论坛 ID
-
你在测试什么?来自json的
get方法?你应该按照@hoefling 的回答来嘲讽。您也可以查看pytest.patch.object来模拟请求和 json 方法(使用returned_value参数)
标签: python pytest requests-mock