在Django中获取HttpResponseNotFound测试get方法

ix0qys7i  于 2023-03-09  发布在  Go
关注(0)|答案(1)|浏览(143)

我正在为终结点生成测试用例。使用浏览器访问本地开发中的终结点工作正常--我得到了预期的响应。但是,在测试期间,我得到了一个HttpResponseNotFound,其中在服务器上找不到终结点。

#views.py
class ExampleView(APIView):
    permission_classes = (permissions.AllowAny,)

    def get(self, request):
        print('GOT HERE')
        qs = Example.objects.last()
        
        if self.request.user.is_authenticated:
            if self.request.user.is_subscribed:
                message = {
                    'info': 'User can download template.',
                    'template': qs.file.url
                }
                return Response(message, status.HTTP_200_OK)

        message = {
            'info': 'User cannot download template.',
            'template': None
        }
        return Response(message, status.HTTP_400_BAD_REQUEST)

在我的网站上urls.py

#urls.py
urlpatterns = [
    path('admin/', admin.site.urls),
    path('request/download_template', ExampleView.as_view()),
]

我的测试版本

class TestExample(APITestCase):
    fixtures = ['fixtures/initial', 'fixtures/auth', 'fixtures/example']

    def test_forecast_template_authenticated(self):
        response = self.client.get(
            '/request/download_template/')
        
        print('result', response)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

对策
〈HttpResponseNotFound状态代码=404“,text/html;字符集=utf-8”〉
我正在尝试调试,但我甚至没有到达视图中的print语句。我一直在查找可能是我的错误,但已经过了几个小时。为什么我会得到这样的响应?可能是我的错误?

whitzsjs

whitzsjs1#

在您的测试中,您使用了不同的url:

def test_forecast_template_authenticated(self):
    response = self.client.get(
        '/request/download_template/')

比您在URL中设置的:

path('request/download_template', ExampleView.as_view()),

注意结尾处的斜线。

相关问题