#python #django #unit-testing #django-rest-framework
Вопрос:
Я пишу несколько модульных тестов для своего приложения django. но тест не удался из-за пропущенных параметров запроса, но я передал параметры запроса.
Это один из моих тестов:
def test_delete_card(self):
url = reverse("postideas-urls:DeleteCard")
card_pk=self.test_card_second.id
data3 = {
'card_pk':card_pk
}
self.client.credentials(HTTP_AUTHORIZATION='Bearer ' self.token)
response = self.client.delete(url,params=data3)
print(response.__dict__)
self.assertEqual(response.status_code, status.HTTP_200_OK)
и это мое response.__dict___
... '_container': [b'{"error":"card_pk query param(s) are required"}'], '_is_rendered': True, 'data': {'error': 'card_pk query param(s) are required'}, 'exception': False, 'content_type': None, 'accepted_renderer': <rest_framework.renderers.JSONRenderer object at 0x7fb757f3aad0>, 'accepted_media_type': 'application/json', 'renderer_context': {'view': <postideas.views.DeleteCardView object at 0x7fb757f37d10>, 'args': (), 'kwargs': {}, 'request': <rest_framework.request.Request: DELETE '/api/v1/postideas/Delete_Card/'>, 'response': <Response status_code=400, ...'request': {'PATH_INFO': '/api/v1/postideas/Delete_Card/', 'REQUEST_METHOD': 'DELETE', 'SERVER_PORT': '80', 'wsgi.url_scheme': 'http', 'params': {'card_pk': 5}, 'QUERY_STRING': '', 'HTTP_AUTHORIZATION': 'Bearer ...
Ответ №1:
Вы передаете данные как params=data3
, но предполагается, что это либо 2-й позиционный аргумент, либо аргумент ключевого data
слова . Следовательно, вы можете сделать запрос следующим образом:
response = self.client.delete(url, data3)
или
response = self.client.delete(url, data=data3)
Примечание. Также, если вы используете общие представления DRF, код состояния для
успешного запроса на удаление равен 204, поэтому утверждение может потребоваться
изменить на:self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
Комментарии:
1. Потому что я не хочу выдавать их за тело. Мне нужно, чтобы они были параметрами запроса моего запроса GET или запроса PUT.