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

Django视图测试报错:TestInformLogin对象无clinet属性求助

解决Django测试中的AttributeError问题

你遇到的问题有两个核心原因,对应以下修复步骤:

1. 修正测试初始化方法的命名

Django的TestCase类规定,测试用例执行前的初始化逻辑必须放在**setUp**方法中(驼峰写法,首字母小写s,大写U)。你自定义的set_up_create_user是普通方法,测试框架不会自动调用它,导致self.client等属性根本没被初始化。

2. 修正拼写错误

代码里把client拼成了clinet(少了一个i),不管是实例变量定义还是后续调用,都写错了单词,这直接导致找不到对应属性。


修正后的完整代码

from django.test import TestCase, Client
from django.urls import reverse
from KnowledgeManagement.models import Members, TblInform

class TestInformLogin(TestCase):
    def setUp(self):
        self.user = Members.objects.create(username='testuser', nationalCode='1235', mobileNumber='094562', date_joined='2021-11-22')
        self.user.set_password('12345')
        self.user.save()
        self.client = Client()  # 修正拼写错误
        self.client.login(username='testuser', password='12345')
        self.inform_list_url = reverse('inform_list')
        # 建议在setUp中创建对应id的通知实例,避免测试时出现404
        self.test_inform = TblInform.objects.create(id=1, ...)  # 补充你的TblInform字段
        self.edit_inform_url = reverse('edit_inform', args=[1])

    def test_inform_list_GET(self):
        response = self.client.get(self.inform_list_url)  # 修正拼写错误
        self.assertEquals(response.status_code, 200)
        self.assertTemplateUsed(response, 'inform_list.html')

    def test_edit_inform_GET(self):
        response = self.client.get(self.edit_inform_url)  # 修正拼写错误
        self.assertEquals(response.status_code, 200)
        self.assertTemplateUsed(response, 'inform.html')

额外提醒:edit_inform的args=[1]需要数据库中存在id为1的TblInform实例,建议在setUp中创建对应的测试数据,否则测试可能会触发404错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 22:24:14