0

我试图弄清楚如何模拟一个 numpy 结构化数组并且运气不佳。理想情况下,我想做这样的事情:

from mock import MagicMock
mock_obj = MagicMock()
mock_obj['some']['test']['structure'] = 3
assert 3 ==  mock_obj['some']['test']['structure']

我了解如何使用 来模拟单个字典,side_effect但还没有弄清楚如何为任意、嵌套__getitem____setitem__函数执行此操作。

编辑:

这是一些上下文:

def function(self): 
    arr = self.my_structured_array['get']['some']['array']
    #Make decisions based on return value of arr

这样我就可以self.my_structured_array用一些垃圾值来模拟对象来测试其他逻辑。关键是字典对象实际上与 h5py 库相关联,因此我想模拟它。

4

1 回答 1

0

我相信我找到了解决方案。看起来有点蹩脚,但这是我能够得到的壁橱:

from mock import MagicMock
mock_obj = MagicMock()
mock_obj.__getitem__().__getitem__().__getitem__.return_value = 3
assert 3 ==  mock_obj['some']['test']['structure']

我真正看到的唯一问题是它不适用于多个级别。即mock_obj['some']['test']返回一个模拟对象而不是 3。

于 2015-11-04T13:19:26.100 回答