如何创建单元测试来检查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,然后断言。