Исключение NoReverseMatch при создании интеграционного теста для API REST с Python Django - PullRequest
0 голосов
/ 02 апреля 2020

Я создал REST API, принимающий запрос POST в Django. Сам запрос прекрасно работает при вызове из интерфейса React, в самом API не должно быть ничего плохого.

Я хочу создать интеграционный тест для API.

Я написал Тест ниже, который в основном копируется / вставляется из Django Документации , адаптированной к моему API:

from django.urls import reverse, path
from rest_framework import status
from rest_framework.test import APITestCase

    class SendLoginEmailTest(APITestCase):

        def test_post_withValidData_loginEmailIsSent(self):
            url = reverse('api_private:send_login_email')
            data = {'email': 'validemail@email.com', 'token': '4d4ca980-cb0c-425d-8d2c-7e38cb33f38e'}
            response = self.client.post(url, data, format='json')
            self.assertEqual(response.status_code, status.HTTP_200_OK)

Я запускаю тест с помощью команды:

python3 manage.py test

Тест не пройден со следующим исключением:

django.urls.exceptions.NoReverseMatch: Reverse for 'send_login_email' not found. 'send_login_email' is not a valid view function or pattern name.

Есть идеи, что я делаю не так?

== Обновление ==

Содержимое urls.py .

from django.urls import path
from server.api_private.views import SendLoginEmail, ValidateEmail, IsEmailValidated, ProjectSave

app_name = "api_private"

urlpatterns = [
    path('send_login_email/', SendLoginEmail.as_view()),
    path('validate_email/', ValidateEmail.as_view()),
    path('is_email_validated/', IsEmailValidated.as_view()),
    path('project_save/', ProjectSave.as_view())
]

1 Ответ

1 голос
/ 03 апреля 2020

Вы не добавили имена в свои URL. reverse функции ищет имена. Добавьте имена ко всем URL-адресам, которые вы собираетесь использовать с функцией reverse.

urlpatterns = [
    path('send_login_email/', SendLoginEmail.as_view(), name='send_logic_email'),
    ...,
]
...