如何创建单元测试来检查Flask中API的响应?
问题描述:
我想测试一个JSON API我瓶实施如何创建单元测试来检查Flask中API的响应?
这是我的看法功能
@app.route("/dummy")
def dummy():
return {"dummy":"dummy-value"}
而在我的单元测试我使用
def setUp(self):
self.app = my_app.app.test_client()
def test_dummy(self):
response = self.app.get("/dummy")
self.assertEqual(response['dummy'], "dummy-value")
然而测试,当我运行它,我得到错误TypeError: 'dict' object is not callable
答
使用jsonify()
修正错误'dict' object is not callable
from flask import jsonify
@app.route("/dummy")
def dummy():
return jsonify({"dummy":"dummy-value"})
,并在测试,你必须拉出来JSON HTTP响应
import json
class MyAppCase(unittest.TestCase):
def setUp(self):
my_app.app.config['TESTING'] = True
self.app = my_app.app.test_client()
def test_dummy(self):
response = self.app.get("/dummy")
data = json.loads(response.get_data(as_text=True))
self.assertEqual(data['dummy'], "dummy-value")
这现在运行我的。
答
你应该返回一个字符串,而不是一个字典对象!
@app.route("/dummy")
def dummy():
return flask.jsonify(dummy="dummy-value")
而在你的测试中,使用json.loads(..)
解析JSON,然后断言。