Тестовый метод в Джанго - PullRequest
0 голосов
/ 12 ноября 2011

Я тестирую метод PUT в своем приложении Django.Однако, когда я звоню:

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()

Итак, как мне убедиться, что фактическая полезная нагрузка, которую я отправил с моим запросом пут (не объект FakePayload), это то, что попадает в код, который я пытаюсь протестировать в моем виде?

Ответы [ 2 ]

0 голосов
/ 01 мая 2012

Я бы предостерег от взлома вашего производственного кода для такой ошибки теста. Это почти всегда означает, что вы делаете что-то не так, что вы должны исправить. В моем случае причиной этой ошибки была инициализация формы с объектом запроса, а не с request.POST или request.GET. Если вы по-прежнему сталкиваетесь с этой ошибкой (будем надеяться, что нет ...), повторно проверьте инициализацию формы или опубликуйте ее здесь.

0 голосов
/ 13 ноября 2011

Таким образом, способ фактически сделать это - использовать функцию raw_post_data.Это позор, потому что, насколько я могу судить, это нарушает модель REST.Но эй, это работает.

Я существенно изменил:

payload = request.readlines()

на:

   payload = request.raw_post_data

на мой взгляд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...