我想模拟一个类方法的输出,它由不同模块中定义的函数调用。例如:
类模块.py
class my_class:
def __init__(self, user):
self.user = user
def my_method(self):
return [1,2,3]
def other_methods(self):
other_func(self.user)
return "something I do not really want to mock"
函数模块.py
from class_module import my_class
def my_fun():
user = "me"
foo = my_class(user)
foo.other_methods()
return foo.my_method()
测试.py
@patch("function_module.my_class")
def test_my_fun(class_mock):
class_mock.return_value.my_method.return_value = []
bar = my_fun()
assert bar == []
但是,我得到一个AssertionError
说法[1,2,3] != []
。所以我想模拟永远不会发生在我想要的方法上。有人可以解释怎么做吗?为什么会这样?
编辑
实际上,显示的实现不起作用,因为测试正在启动一个完全独立的过程。因此,不能模拟任何函数。对不起我的误解