【发布时间】:2017-12-04 23:41:25
【问题描述】:
在我要测试的代码的顶部,我有一个类似的导入:
from resources import RESOURCES
其中RESOURCES 是值字典。
如何在测试中模拟它?
我想要的是,无论真实模块中有什么,都返回一个众所周知的字典。
例如,在一项测试中,我希望 RESOURCES 成为:
{
'foo': 'bar'
}
在另一个测试中,我希望它是:
{
'something': 'else'
}
【问题讨论】:
-
“模拟”到底是什么意思?
-
你需要如何“模拟”它。是否需要测试模块是否存在,是否需要伪造模块是否存在?您只需要
RESOURCES定义,还是需要sys.modules中的虚假条目? -
您可以添加一个本地(即同一目录)模块
resources.py,其中包含您的模拟RESOURCES字典。或者,您可以将该模块放在其他位置,并将相应的路径添加到sys.path:sys.path.insert(0, '/path/to/resources/')。 -
没有任何方法可以通过
unittest.mock实现它?
标签: python unit-testing dictionary mocking patch