Ich habe Code in einer Flask-Anwendung, die JSONs in der Anforderung verwendet, und ich kann das JSON-Objekt folgendermaßen abrufen:
Request = request.get_json()
Dies hat gut funktioniert, aber ich versuche, Unit-Tests mit Pythons unittest-Modul zu erstellen, und ich habe Schwierigkeiten, einen Weg zu finden, einen JSON mit der Anfrage zu senden.
response=self.app.post('/test_function',
data=json.dumps(dict(foo = 'bar')))
Das gibt mir:
>>> request.get_data()
'{"foo": "bar"}'
>>> request.get_json()
None
Flask scheint ein JSON-Argument zu haben, mit dem Sie json = dict (foo = 'bar') innerhalb der Post-Anfrage setzen können, aber ich weiß nicht, wie ich das mit dem unittest-Modul machen soll.
python
json
flask
python-unittest
Sepehr Nazari
quelle
quelle
request.data
? Wenn die JSON-Analyse aufgrund einer falschen Eingabe fehlschlägt, schlägt sie häufig stillschweigend fehl und gibt zurück,None
sodass die rohen Eingabedaten möglicherweise nicht JSON sind.Antworten:
Ändern des Beitrags in
behoben.
Vielen Dank an user3012759.
quelle
application/json
Inhaltstyp angeben.post
Anfrage, wieresp = client.post('/my/endpoint/',json=my_json_data)
Sie mit Bytes auf die Daten zugreifen könnenresp.data
.UPDATE: Da die von Flask 1.0 freigegebenen
flask.testing.FlaskClient
Methodenjson
Argumente undResponse.get_json
hinzugefügte Methoden akzeptieren , siehe Beispiel .Für Flask 0.x können Sie die folgende Quittung verwenden:
quelle
dict
kein JSON-String sein muss!