Python - 模拟导入的字典

时间:2017-06-30 23:59:17

标签: python unit-testing dictionary mocking patch

在我要测试的代码的顶部,我有一个导入,如:

from resources import RESOURCES

其中RESOURCES是值的字典。

我如何在测试中模拟它?

我想要的是,无论真实模块中的内容是什么,都会返回一个众所周知的词典。

例如,在一个测试中,我希望RESOURCES为:

{
  'foo': 'bar'
}

在另一个测试中,我希望它是:

{
  'something': 'else'
}

2 个答案:

答案 0 :(得分:1)

看看unittest.mock.patch.object。我认为它会满足您的需求。

答案 1 :(得分:0)

patch RESOURCE对象使用的方式是:

from default import RESOURCES
from mock import patch

with patch.dict(RESOURCES, {'foo': 'bar'}, clear=True):
    assert(RESOUCES['foo'], 'bar')

请注意,您需要在测试套件中导入要修补的词典

也可以使用装饰器语法:

from default import RESOURCES
from mock import patch

@patch.dict(RESOURCES, {'foo': 'bar'}, clear=True)
def test(self):
    self.assert(RESOUCES['foo'], 'bar')