如何测试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
从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,则在序列化数据时会收到错误消息。
没有经过测试的东西都是不完整的 这一箴言的起源已经不可考了,尽管他不是完全正确的,但是仍然离真理 不远。没有测试过的应用将会使得提高现有代码质量很困难,二不测试应用 程序的开发者,会显得特别多疑。如果一个应用拥有自动化测试,那么您就 可以安全的修改然后立刻知道是否有错误。 Flask 提供了一种方法用于测试您的应用,那就是将 Werkzeug 测试 Client 暴露出来,并且为您操作这些内容 的
在空手道中,我希望有一个模式变量,它是响应数据的超集,这样我就可以用相同的模式测试多个请求。 这对于GraphQL应该特别有用,因为请求本身定义了返回的字段。 预期模式: 回答数据: 在本例中,响应返回的所有键。数据应该在架构中,但架构中的任何键都不在响应中。数据应该被忽略。 在空手道中有没有办法做到这一点,或者有没有计划在将来增加这一功能? 编辑:更新了示例,因为唯一遗漏的属性是一个可为空的属性
问题内容: 我有一个AJAX请求,期望以JSON作为响应。 但是有可能返回的内容可能不是JSON,而是HTML错误页面(不幸的是,响应类型为200)。 如何确定响应是否为JSON? (如果有帮助,我正在使用jQuery。但是我不能使用任何插件。) 问题答案: 好吧,如果您使用的是jQuery并指定了对调用的属性,那么jQuery将尝试解析JSON,如果不是,则JSON应该调用回调。 编辑 对于不使
问题内容: 我有一个简单的AJAX调用,服务器将返回包含有用数据的JSON字符串或PHP函数产生的错误消息字符串。如何测试此数据是JSON字符串还是错误消息。 最好使用一个称为的函数,就像您可以使用该函数来测试某个东西是否为数组一样。 这就是我要的: 问题答案: 使用JSON.parse
本文向大家介绍Flask 测试我们的Hello World应用,包括了Flask 测试我们的Hello World应用的使用技巧和注意事项,需要的朋友参考一下 示例 介绍 在这个最小的示例中,pytest我们将使用测试我们的Hello World应用程序确实返回“ Hello,World!”。URL上有GET请求时,HTTP OK状态码为200/ 首先,让我们安装pytest到我们的virtual