如何创建单元测试来检查在Flask中制作的API的响应?

时间:2016-07-07 23:28:24

标签: python flask

我正在尝试测试我在Flask中实现的JSON API

这是我的视图功能

@app.route("/dummy")
def dummy(): 
    return {"dummy":"dummy-value"}

在我的Unittest中,我正在使用

进行测试
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

2 个答案:

答案 0 :(得分:12)

使用jsonify()修复了错误'dict' object is not callable

from flask import jsonify
@app.route("/dummy")
def dummy(): 
    return jsonify({"dummy":"dummy-value"})

对于测试,您必须从HTTP响应中提取JSON

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")

这现在适合我。

答案 1 :(得分:-1)

你应该返回一个字符串,而不是字典对象!

@app.route("/dummy")
def dummy(): 
    return flask.jsonify(dummy="dummy-value")

在测试中,使用json.loads(..)解析JSON,然后断言。