Обратный URL Python Django в unittest возвращает 404 - PullRequest
0 голосов
/ 13 сентября 2018

url:

path('some/path_to/<int:special_id>/', some_views.someAPI.as_view(), name="someAPI")

Обычно при доступе к API с помощью https://some_domain/some/path_to/1 я могу получить данные с помощью special_id=1.Здесь нет проблем.

Однако, когда я запускаю тест, который содержит функцию reverse(), special_id не загружается.

Я делаю

url = reverse('someAPI', kwargs={'special_id': 1})
request = self.factory.get(url)
force_authenticate(request, user=self.user)
response = someAPI.as_view()(request, special_id=1)

это дало мне 404: Не найдено, когда я ожидаю 200

Я проверил путь, и он кажется правильным.Мне интересно, почему я получаю 404. Это проходит через юнит-тест django.

РЕДАКТИРОВАТЬ:

Оказывается, я не сохранил объект в тестовой БД.Убедитесь, что вы вызываете save() при создании объекта .....

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Во время теста создается новая база данных с именем «test_dbname», которая немедленно сбрасывается.Вы должны создать элемент с id: 1 перед функцией reverse ().

0 голосов
/ 13 сентября 2018

А что если вы сделаете:

reverse('someAPI', args=[1]

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