Python 修补Factory类中的对象会产生TypeError:super()参数1必须是type,而不是MagicMock
我想模拟工厂中的对象并得到错误“我得到的错误是: TypeError:super()参数1必须是类型,而不是MagicMock。“ 我读了帖子:,但我不知道如何从对象中派生MagicMock 我的代码如下:Python 修补Factory类中的对象会产生TypeError:super()参数1必须是type,而不是MagicMock,python,python-3.x,oop,mocking,monkeypatching,Python,Python 3.x,Oop,Mocking,Monkeypatching,我想模拟工厂中的对象并得到错误“我得到的错误是: TypeError:super()参数1必须是类型,而不是MagicMock。“ 我读了帖子:,但我不知道如何从对象中派生MagicMock 我的代码如下: from unittest.mock import patch class B(): pass class A(B): pass class AFactory: def create(self): a = A() super(
from unittest.mock import patch
class B():
pass
class A(B):
pass
class AFactory:
def create(self):
a = A()
super(A, a).__init__()
with patch('mymain.A'):
AFactory().create()
错误:
TypeError: super() argument 1 must be type, not MagicMock
这个问题的原因是什么?我使用工厂来表示“a”,因为如果我在工厂中有名为separate的超类,我可以做更好的集成测试。调用
super
有什么意义?首先,它为什么在那里?为什么要使用单独的AFactory
class?我的“a-class”实际上是“class Controller(cmd.cmd)”。如果我想做一个集成测试,我不想调用cmd.cmd的super(),因为它会提示输入。如果您有更好的建议,请让我知道。您应该删除提示,并找到其他方式向实例提供数据。或者你可以模拟输入
当然……调用超级
有什么意义?首先,它为什么在那里?为什么要使用单独的AFactory
class?我的“a-class”实际上是“class Controller(cmd.cmd)”。如果我想做一个集成测试,我不想调用cmd.cmd的super(),因为它会提示输入。如果您有更好的建议,请让我知道。您应该删除提示,并找到其他方式向实例提供数据。或者你可以模拟输入当然。。。