以下是我的单元测试代码,用于将HTTP请求模拟到本地存储的Google Cloud Function,该函数返回json响应
from unittest.mock import Mock
from cloud_functions import main
from Flask import jsonify
data = { ... }
headers = { ... }
req = Mock(get_json=Mock(return_value=data), args=data, headers=headers)
resp = main.my_function(req)
以下是我在尝试获取响应中的json数据时遇到的错误类型。
json_data = resp.json()
value = json_data['some_key']
错误
TypeError:'dict'对象不可调用
value = resp['some_key']
错误
TypeError:'Response'对象不可订阅
json_data = jsonify(resp)
value = json_data['some_key']
错误
TypeError:Response类型的对象不是JSON可序列化的
通过使用此代码解决了它。
json_data = resp.json
value = json_data['some_key']
现在一切都按预期工作了。