【发布时间】:2018-03-28 20:19:53
【问题描述】:
我是一般修补/模拟的新手,尤其是 python。我正在尝试使用以下方法修补将在测试用例中访问的字典
obj = Foo(None)
with patch.dict(obj.bar.items_dict,{TEST_DIR + '/Transparent.gif', data}):
output = obj.create_css_for_imgs()
但我收到以下错误。请理解Foo的__init__()函数默认使barNone
AttributeError: 'NoneType' 对象没有属性 'items_dict'
类如下:
class Foo(object):
def __init__(self, barVal):
self.bar = barVal
class Bar():
def __init__(self, val)
self.items_dict = {}
self._load(val)
【问题讨论】:
-
听起来您回答了自己的问题。
-
我实际上想知道我应该怎么做,我猜这是因为 bar 被初始化为
None但是在我的真实代码中,它在这个函数之前的其他地方设置......在这里我只是需要修补 bar.items_dict -
@KennyOstrom 你能解释一下我该怎么做吗?
-
@tsar2512 你能展示你的
Foo类、导入和完整测试吗? -
模拟 bar 对象,而不是让它以 None 运行。您不能在 None 上设置属性。
标签: python unit-testing mocking patch