Saya memiliki kode dalam aplikasi Flask yang menggunakan JSON dalam permintaannya, dan saya bisa mendapatkan objek JSON seperti ini:
Request = request.get_json()
Ini telah berfungsi dengan baik, namun saya mencoba membuat pengujian unit menggunakan modul unittest Python dan saya mengalami kesulitan menemukan cara untuk mengirim JSON dengan permintaan tersebut.
response=self.app.post('/test_function',
data=json.dumps(dict(foo = 'bar')))
Ini memberi saya:
>>> request.get_data()
'{"foo": "bar"}'
>>> request.get_json()
None
Flask tampaknya memiliki argumen JSON di mana Anda dapat menyetel json = dict (foo = 'bar') di dalam permintaan posting, tetapi saya tidak tahu bagaimana melakukannya dengan modul unittest.
python
json
flask
python-unittest
Sepehr Nazari
sumber
sumber
request.data
isinya? Seringkali ketika parsing json gagal karena input yang salah, gagal diam-diam dan kembaliNone
sehingga data input mentah mungkin bukan json.Jawaban:
Mengubah postingan menjadi
memperbaikinya.
Terima kasih kepada pengguna3012759.
sumber
application/json
tipe konten.post
permintaan sepertiresp = client.post('/my/endpoint/',json=my_json_data)
Anda dapat mengakses data sebagai byte denganresp.data
.UPDATE: Sejak Flask 1.0 dirilis,
flask.testing.FlaskClient
metode menerimajson
argumen danResponse.get_json
metode yang ditambahkan, lihat contoh .untuk Flask 0.x Anda dapat menggunakan tanda terima di bawah ini:
sumber
dict
bukan string JSON!