断言错误:django 测试中的 404 != 200

问题描述 投票:0回答:1

我有测试代码,但显示错误: self.assertEquals(response.status_code, 200) 断言错误:404!= 200

class TestViews(TestCase):
    def setUp(self):
        self.client = Client()
        self.list_url = reverse('home')
        self.about_url = reverse('about', args=[1])

    def test_index(self):
        response = self.client.get(self.list_url)

        self.assertEquals(response.status_code, 200)
        self.assertTemplateUsed(response, 'job_app/index.html')

    def test_about(self):
        response = self.client.get(self.about_url)

        self.assertEquals(response.status_code, 200)
        self.assertTemplateUsed(response, 'job_app/about.html')

我的网址:

path('about/<int:pk>/', views.about.as_view(), name='about'),

视图:

class about(DetailView):
    model = JobsModel
    template_name = 'job_app/about.html'
    context_object_name = 'job'

我不知道该怎么办

python django testing
1个回答
0
投票

您没有创建

JobsModel
记录。您应该首先创建一个:

class TestViews(TestCase):
    def setUp(self):
        self.client = Client()
        #               may require values 🖟🖟
        self.job = JobsModel.objects.create()
        self.list_url = reverse('home')
        self.about_url = reverse('about', args=[self.job.pk])

    def test_index(self):
        response = self.client.get(self.list_url)

        self.assertEquals(response.status_code, 200)
        self.assertTemplateUsed(response, 'job_app/index.html')

    def test_about(self):
        response = self.client.get(self.about_url)
        self.assertEquals(response.status_code, 200)
        self.assertTemplateUsed(response, 'job_app/about.html')

注意:在 Django 中,基于类的视图 (CBV) 通常具有

…View
后缀,以避免与模型名称冲突。 因此,您可能会考虑将视图类重命名为
AboutView
,而不是
About


注意:型号通常没有

…Model
后缀。因此,最好将
JobsModel
重命名为
Job

© www.soinside.com 2019 - 2024. All rights reserved.