使用Python Django为REST API创建集成测试时出现NoReverseMatch异常



我在Django中创建了一个接受POST请求的REST API。当从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())
]

您没有在URL中添加名称。reverse函数正在查找名称。将名称添加到要与reverse函数一起使用的所有URL中。

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

最新更新