リクエストでJSONを使用するFlaskアプリケーション内にコードがあり、次のようにJSONオブジェクトを取得できます。
Request = request.get_json()
これは問題なく動作していますが、Pythonのユニットテストモジュールを使用してユニットテストを作成しようとしており、リクエストでJSONを送信する方法を見つけるのが困難です。
response=self.app.post('/test_function',
data=json.dumps(dict(foo = 'bar')))
これは私に与えます:
>>> request.get_data()
'{"foo": "bar"}'
>>> request.get_json()
None
Flaskには、JSON引数があり、投稿リクエスト内でjson = dict(foo = 'bar')を設定できるようですが、unittestモジュールでそれを行う方法がわかりません。
>>> request.get_data() '{"foo": "bar"}' >>> request.get_json()なしフラスコのリクエストがどのように機能するかはよくわかりませんが、データとjsonを分離しているようです。理にかなっている場合、データではなくjsonに情報を送信する方法を理解できません。
—
Sepehr Nazari、2015
私はそれがコンテンツタイプのヘッダーだと思うので、それらをappliacation / jsonに設定してみてください。また、forceパラメータも役に立ちますが、おそらく単体テストに合格するためにそこに行きたくないので、mimeを変更した方が良いでしょう
—
user3012759
request.data
含まれていますか?多くの場合、誤った入力が原因でjsonの解析が失敗すると、それは警告なしに失敗し、返されるNone
ため、生の入力データはjsonではない場合があります。