Python 如何模拟classmethod的cls参数?

Python 如何模拟classmethod的cls参数?,python,unit-testing,mocking,class-method,Python,Unit Testing,Mocking,Class Method,我有一个使用classmethod作为自定义构造函数的类 #my_module.py 类别MyClass: 定义初始化(self,my_arg): self.my_arg=my_arg @类方法 定义my_构造函数(cls): 返回cls(“我的val”) 我想在测试中断言,已使用正确的值调用构造函数,并返回实例 我尝试了几种修补方法,但都没能成功 我尝试修补整个类,使用wrapps参数来执行真正的方法 #my_test.py 从unittest导入TestCase 从unittest.moc

我有一个使用classmethod作为自定义构造函数的类

#my_module.py
类别MyClass:
定义初始化(self,my_arg):
self.my_arg=my_arg
@类方法
定义my_构造函数(cls):
返回cls(“我的val”)
我想在测试中断言,已使用正确的值调用构造函数,并返回实例

我尝试了几种修补方法,但都没能成功

我尝试修补整个类,使用wrapps参数来执行真正的方法

#my_test.py
从unittest导入TestCase
从unittest.mock导入修补程序
从my_模块导入MyClass
类MyClassTestCase(TestCase):
@补丁(“my_module.MyClass”,wrapps=MyClass)
def test_my_构造函数(self,my_类):
结果=my_类。my_构造函数()
我的类。断言用(“我的val”)调用了一次
self.assertEqual(结果,我的类。返回值)
这里的问题是_my_module.MyClass.my_class_u方法获取的cls参数不是我的Mock,而是真正的MyClass

我的另一个想法是使用patch.object来修补真实的_uinit__;构造函数,但这也不起作用。这一次是因为uu init uuu不应返回任何内容,但MagicMock有一个返回值

#my_test.py
从unittest导入TestCase
从unittest.mock导入修补程序
从my_模块导入MyClass
类MyClassTestCase(TestCase):
@对象(MyClass,“\uuuu init\uuuuuuuu”)
def test_my_构造函数(self,init):
结果=MyClass.my_构造函数()
init.assert_使用(“my val”)调用_一次
self.assertEqual(结果,初始返回值)

是否有一种实际的方法来断言MyClass类已由带有给定参数的my构造函数实例化并返回?

mock
\uuuuuuu new\uuuuu
而不是
\uu init\uuuu
断言将是
init.assert\u使用(MyClass,“my val”)调用一次