AssertionError: 404 != 200 在Django测试中

-1 投票
2 回答
42 浏览
提问于 2025-04-14 15:23

我有一段测试代码,但它显示了错误信息:

self.assertEquals(response.status_code, 200)

错误类型:AssertionError: 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'

我不知道该怎么办

2 个回答

1

在编程中,有时候我们会遇到一些问题,想要找到解决办法。比如说,有人可能在使用某个工具或库的时候,遇到了错误或者不明白的地方。这时候,大家会在一个叫做StackOverflow的网站上提问,寻求帮助。

在这个网站上,很多有经验的程序员会看到这些问题,然后给出他们的建议和解决方案。这样,提问的人就能得到一些有用的信息,帮助他们解决问题。

总之,StackOverflow是一个很好的地方,可以让程序员们互相帮助,分享知识和经验。

class TestViews(TestCase):
def setUp(self):
    test_user = User.objects.create_user(username='test', password='password123')         #new!!!!!
    self.client = Client()
    self.job = JobsModel.objects.create(     #new!!!!!
        company_name = 'test',  
        description = 'test',
        salary = 1,
        work_position = 'test',
        phone_number = '1111111',
        email = 'test@gmail.com',
        creator = User.objects.get(username='test'),   #new!!!!!!
        
    )
    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')
1

你还没有创建一个 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 可能会更好。

撰写回答