gpt4 book ai didi

python - MagicMock python 3.x 获取数据的响应

转载 作者:太空宇宙 更新时间:2023-11-04 01:52:17 25 4
gpt4 key购买 nike

我有以下两个函数,我正在尝试使用 magicMock 编写单元测试用例。

import json
from unittest import mock
from unittest.mock import MagicMock
def get_response(m, time):
response = get_data(m, time)
return response

def my_method():
m = ''
time = "2019-08-30"
resp = get_response(m, time)
if resp.status_code = 200:
data = json.loads(resp.text)

我正在尝试编写单元测试用例以使用 MagicMock 获取响应代码和文本:

ok_response_mock = MagicMock()
type(ok_response_mock).status_code = mock.PropertyMock(return_value=200)
ok_response_mock.text.return_value = "{'blah':'blah'}"

get_response = MagicMock()
get_response.return_value = ok_response_mock

但我没有得到这个工作。上述方法无法模拟 resp.text

最佳答案

您可以使用 Mock 对象模拟 get_response,该对象返回具有 status_code 属性的 Mock 对象200 和模拟 JSON 内容的 text 属性:

import json
from unittest.mock import Mock

def my_method():
m = ''
time = "2019-08-30"
resp = get_response(m, time)
if resp.status_code == 200:
print(json.loads(resp.text))

get_response = Mock(return_value=Mock(status_code=200, text='{"blah": "blah"}'))

my_method()

这个输出:

{'blah': 'blah'}

由于Mock对象的默认返回值是一个Mock对象,您还可以配置return_value属性像这样模拟 对象,它也能正常工作:

get_response = Mock()
get_response.return_value.status_code = 200
get_response.return_value.text = '{"blah": "blah"}'

关于python - MagicMock python 3.x 获取数据的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57734097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com