如何測試生成的Flask視圖響應爲JSON?測試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視圖響應爲JSON?測試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
jsonify
設置內容類型application/json
。此外,還可以嘗試解析響應數據作爲JSON。如果無法解析,您的測試將失敗。
from flask import json
assert response.content_type == 'application/json'
data = json.loads(response.get_data())
assert data['message'] == 'hello world'
通常情況下,這種測試對自己沒有意義。你知道這是JS ON自從jsonify
返回時沒有錯誤,並且jsonify
已經由Flask測試。如果它不是有效的JSON,則序列化數據時會收到錯誤。
它有一個python庫。
import json
#...
def checkJson(s):
try:
json.decode(s)
return True
except json.JSONDecodeError:
return False
如果你還需要檢查它是否是一個有效的字符串,檢查邊界「S。 你可以在這裏閱讀幫助的蟒蛇網站https://docs.python.org/3.5/library/json.html。
不要使用'decode',使用'loads'。使用'flask.json',而不是'json',因爲它正確處理字節和unicode。不要手動檢查字符串。這並不顯示如何獲取* Flask *響應數據。 – davidism
這會在Python 3中引發編碼錯誤。使用'response.get_data(as_text = True)'來避免這個問題。 –
@MarcoLavagnino如果這是提高編碼錯誤,其他的錯誤。 'flask.json.loads'可以從字節加載JSON,不需要先將它編碼爲文本。 – davidism
你說得對,我正在使用'json.loads'並導致錯誤。我試圖幫助別人,但你最終幫助了我!謝謝! –