J'ai du code dans une application Flask qui utilise des JSON dans la demande, et je peux obtenir l'objet JSON comme suit:
Request = request.get_json()
Cela fonctionne bien, mais j'essaie de créer des tests unitaires à l'aide du module unittest de Python et j'ai du mal à trouver un moyen d'envoyer un JSON avec la demande.
response=self.app.post('/test_function',
data=json.dumps(dict(foo = 'bar')))
Cela me donne:
>>> request.get_data()
'{"foo": "bar"}'
>>> request.get_json()
None
Flask semble avoir un argument JSON où vous pouvez définir json = dict (foo = 'bar') dans la demande de publication, mais je ne sais pas comment faire cela avec le module unittest.
python
json
flask
python-unittest
Sepehr Nazari
la source
la source
request.data
contient le? Souvent, lorsque l'analyse json échoue en raison d'une mauvaise entrée, elle échoue silencieusement et renvoieNone
ainsi les données d'entrée brutes peuvent ne pas être json.Réponses:
Changer le message en
réparé.
Merci à user3012759.
la source
application/json
type de contenu.post
requête commeresp = client.post('/my/endpoint/',json=my_json_data)
vous pouvez accéder aux données sous forme d'octets avecresp.data
.MISE À JOUR: Puisque les
flask.testing.FlaskClient
méthodes publiées par Flask 1.0 acceptent l'json
argument et laResponse.get_json
méthode ajoutés, voir l' exemple .pour Flask 0.x, vous pouvez utiliser le reçu ci-dessous:
la source
dict
chaîne JSON!