AssertionError: 404 != 200 在Django测试中
我有一段测试代码,但它显示了错误信息:
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
可能会更好。