我有一个带有这样一个模块的
python类:
xy.py
from a.b import ClassA class ClassB: def method_1(): a = ClassA() a.method2()
然后我将ClassA定义为:
b.py
from c import ClassC class ClassA: def method2(): c = ClassC() c.method3()
现在在这段代码中,当为xy.py编写测试时我想要mock.patch ClassC,有没有办法在python中实现呢?
显然我试过了:
mock.patch('a.b.ClassA.ClassC)
和
mock.patch('a.b.c.ClassC')
这些都没有奏效.
解决方法
您需要修补ClassC所在的位置,以便b中的ClassC:
mock.patch('b.ClassC')
或者,换句话说,ClassC被导入到模块b中,因此需要修补ClassC的范围.