You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django测试出现AssertionError:404≠200,请求排查解决方法

问题原因

你的about视图是DetailView,它需要从数据库中获取对应pk的JobsModel对象才能返回200响应。但测试时你直接请求了pk=1的地址,而测试数据库是空的,没有这个对象,所以返回404。

解决方案

在测试的setUp方法中创建一个JobsModel实例,并用这个实例的pk生成测试用的URL:

修改后的测试代码:

class TestViews(TestCase):
    def setUp(self):
        self.client = Client()
        self.list_url = reverse('home')
        # 创建一个JobsModel实例,根据你的模型字段补充必填属性
        self.test_job = JobsModel.objects.create(
            title="测试职位",
            description="测试职位描述"
            # 其他必填字段都需要在这里填写
        )
        # 使用实例的真实pk生成about_url
        self.about_url = reverse('about', args=[self.test_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')
关键说明
  • JobsModel.objects.create(...):在测试专属的数据库中创建真实的对象,确保DetailView能找到对应数据,必须补充模型中所有必填的字段。
  • 用self.test_job.pk代替硬编码的1:避免因测试环境中实例pk变化(比如多次运行测试导致pk递增)引发的测试失败,让测试逻辑更健壮。

内容的提问来源于stack exchange,提问作者Fit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 22:44:50