1

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オブジェクトではない)が、ビューでテストしようとしているコードに到達することを確認するにはどうすればよいですか?

4

2 に答える 2

1

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

私は本質的に変更しました:

payload = request.readlines()

に:

   payload = request.raw_post_data

私からしてみれば。

于 2011-11-12T21:28:22.547 に答える
0

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

于 2012-05-01T18:37:23.707 に答える