2015-11-04 65 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.