Python - 模拟导入字典
Python - mock imported dictionary
在我要测试的代码顶部,我有一个导入,如:
from resources import RESOURCES
其中 RESOURCES
是值字典。
如何在测试中模拟它?
我想要的是,无论真正的模块中有什么,return一个众所周知的字典。
例如,在一项测试中,我希望 RESOURCES
为:
{
'foo': 'bar'
}
而在另一个测试中我希望它是:
{
'something': 'else'
}
看看unittest.mock.patch.object。我认为它将满足您的需求。
我到达 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')
在我要测试的代码顶部,我有一个导入,如:
from resources import RESOURCES
其中 RESOURCES
是值字典。
如何在测试中模拟它?
我想要的是,无论真正的模块中有什么,return一个众所周知的字典。
例如,在一项测试中,我希望 RESOURCES
为:
{
'foo': 'bar'
}
而在另一个测试中我希望它是:
{
'something': 'else'
}
看看unittest.mock.patch.object。我认为它将满足您的需求。
我到达 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')