我有一个像这样的类:
from external_package.module.sub_module import fun
class MyClass:
def __init__(self, x, y):
self.x = x
self.y = y
self.z = fun()
def printer(self):
print(f"X : {self.x}, y : {self.y}, z: {self.z}")
我想为这个类编写一个单元测试,并模拟在init方法中发生的函数调用。
我尝试过像这样打补丁,
from external_package.module import sub_module
def test_my_class(mocker):
mocker.patch.object(sub_module, 'fun', return_value="this is mocked")
obj = MyClass(10, 20)
assert obj.z == "this is mocked"
但是我可以看到该调用没有被打补丁,而是在init方法中发生了函数调用。
我该如何使用pytest-mock或其他模拟包来打补丁呢?