Djangoのテストメソッドをテストする

私は私のDjangoアプリケーションでPUTメソッドをテストしています。しかし、私が電話するとき:

payload = '{server_lib_song_id : -1, host_lib_song_id : ' + str(lib_id) + \
  ', song : "' + song + '", artist : "' + artist + '" , album : "' + \
 album +'"}'
response = client.put('/udj/users/' + user_id + '/library/song', \
  data=payload, content_type='text/json', \
  **{'udj_ticket_hash' : ticket_hash})

私のテストで私は私の見解では次のエラーが発生します:

AttributeError: 'FakePayload' object has no attribute 'readline'

このエラーを投げている行は次のとおりです:

payload = request.readlines()

では、私のput要求(FakePayloadオブジェクトではない)で送信した実際のペイロードが、私の見解でテストしようとしているコードにどうなるのかを確認する方法は?

0
追加された
ビュー: 1

2 答え

ですから実際にこれを行う方法は raw_post_data 関数を使うことです。私が知る限り、これはRESTモデルを破るため、これは残念です。しかし、ねえ、それは動作します。

私は本質的に変わった:

payload = request.readlines()

に:

   payload = request.raw_post_data

私からしてみれば。

0
追加された

私はこのようなテストエラーのためにあなたの生産コードをハッキングすることに注意します。ほとんどの場合、間違ったことをしていることを意味します。これを修正する必要があります。私の場合は、このバグの原因は、request.POSTまたはrequest.GETではなく、requestオブジェクトでフォームを初期化することでした。このバグがまだ発生している場合は(フォームの初期化を再検討するか、ここに投稿してください)。

0
追加された