2015-11-04 49 views
0

我想弄清楚如何嘲笑一个numpy结构化数组,并没有太多的运气。理想情况下,我想这样做:嘲笑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库,所以我想嘲笑它。

+0

你可以添加一些上下文吗?如何使用这个'mock_obj'? – hpaulj

回答

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.