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

如何解决Django测试中super(type, obj): obj必须是type实例或子类型错误?

问题分析与解决

你代码里的错误出在调用self.client_class.get()的方式上:

  • self.client_class是Django测试客户端的类,不是实例,直接调用它的get方法时,错误地把self(测试类实例)传进去了,导致类型不匹配的报错。
  • Django的TestCase已经为你初始化好了客户端实例,直接用self.client即可。

修正后的代码

class IndexTest(TestCase):
    def setUp(self):
        url = reverse('index')
        self.response = self.client.get(url)

关键修正点

  • 把self.client_class.get(self, url)改成self.client.get(url)
    • self.client是TestCase自动创建的客户端实例,调用它的get方法不需要额外传self参数
    • 直接使用实例方法才符合Django测试客户端的使用规范

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 21:18:22