如何解决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
相关产品推荐
相关产品推荐

