Python 测试烧瓶响应是否为JSON

Python 测试烧瓶响应是否为JSON,python,flask,Python,Flask,如何测试Flask视图生成的响应是否为JSON from flask import jsonify @app.route('/') def index(): return jsonify(message='hello world') c = app.app.test_client() assert c.get('/').status_code == 200 # assert is json 它有一个python库 import json #... def checkJson(s):

如何测试Flask视图生成的响应是否为JSON

from flask import jsonify

@app.route('/')
def index():
    return jsonify(message='hello world')

c = app.app.test_client()
assert c.get('/').status_code == 200
# assert is json

它有一个python库

import json
#...
def checkJson(s):
    try:
        json.decode(s)
        return True
    except json.JSONDecodeError:
        return False
如果还想检查它是否为有效字符串,请检查“s”的边界。
您可以在pythons网站上阅读此处的帮助。

从Flask 1.0开始,
response.get_json()
将响应数据解析为json或引发错误

response = c.get("/")
assert response.get_json()["message"] == "hello world"

jsonify
将内容类型设置为
application/json
。此外,您可以尝试将响应数据解析为json。如果解析失败,测试将失败

from flask import json
assert response.content_type == 'application/json'
data = json.loads(response.get_data(as_text=True))
assert data['message'] == 'hello world'
通常,此测试本身没有意义。您知道它是JSON,因为
jsonify
返回时没有错误,
jsonify
已由Flask测试。如果它不是有效的JSON,则在序列化数据时会收到错误