0

派手な構造化配列をモックする方法を見つけようとしていますが、あまり運がありません。理想的には、次のようなことをしたいと思います。

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 に答える