繁体   English   中英

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

[英]NoReverseMatch exception when creating integration test for REST API with Python Django

我创建了一个 REST API,在 Django 中接受一个 POST 请求。 从 React 前端调用时,请求本身效果很好,API 本身应该没有问题。

我想为 API 创建集成测试。

我已经编写了以下测试,它基本上是从适用于我的 API 的Django 文档中复制/粘贴的:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM