我正在尝试Mock
使用python模拟模块的函数(返回一些外部内容)。
我在导入模块的模拟函数时遇到了一些麻烦。
例如,在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()
所以我想我的问题是-如何从我调用的模块内部调用函数的模拟版本?
看来,这from module import function
可能归咎于此,因为它没有指向Mocked函数。