【问题标题】:Test if Flask response is JSON测试 Flask 响应是否为 JSON
【发布时间】:2017-02-23 14:45:51
【问题描述】:

如何测试 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 flask


    【解决方案1】:

    从 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,那么您在序列化数据时会收到错误消息。

    【讨论】:

      【解决方案2】:

      它有一个 python 库。

      import json
      #...
      def checkJson(s):
          try:
              json.decode(s)
              return True
          except json.JSONDecodeError:
              return False
      

      如果您还想检查它是否为有效字符串,请检查“s. 您可以在 pythons 网站https://docs.python.org/3.5/library/json.html 上阅读帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-08
        • 1970-01-01
        • 1970-01-01
        • 2021-04-08
        相关资源
        最近更新 更多