模拟 Numpy 结构化数组
Mocking Numpy Structured Arrays
我正在尝试弄清楚如何模拟 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 库相关联,因此我想模拟它。
我相信我找到了解决方案。看起来有点蹩脚,但这是我能得到的壁橱:
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']
returns 模拟对象而不是 3.
我正在尝试弄清楚如何模拟 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 库相关联,因此我想模拟它。
我相信我找到了解决方案。看起来有点蹩脚,但这是我能得到的壁橱:
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']
returns 模拟对象而不是 3.