我正在尝试使用 python模拟模块返回一个函数(返回一些外部内容)。
I'm having some trouble mocking functions that are imported into a module.
例如,在 util.py
中,我有
def get_content():
return "stuff"
我想模拟 util.get_content
,以便它返回其他的值。
我正在尝试:
util.get_content=Mock(return_value="mocked stuff")
如果在另一个模块中调用 get_content
,它实际上似乎永远不会返回模拟对象。在如何使用 Mock
方面,我是否遗漏了什么?
请注意,如果我调用以下命令,那么事情就会正常运行:
>>> util.get_content=Mock(return_value="mocked stuff")
>>> util.get_content()
"mocked stuff"
但是,如果从另一个模块内部调用 get_content
,它将调用原始函数而不是模拟版本:
>>> from mymodule import MyObj
>>> util.get_content=Mock(return_value="mocked stuff")
>>> m=MyObj()
>>> m.func()
"stuff"
mymodule.py
的内容
from util import get_content
class MyObj:
def func():
get_content()
所以我想我的问题是——我如何从我调用的模块中调用函数的 Mocked 版本?
看起来 from module import function
可能是这里的罪魁祸首,因为它没有指向 Mocked 函数。