在 python3 中使用 MagicMock 模拟 hdf5 文件和 hdf5 组
Simulate hdf5 file and hdf5 group with MagicMock in python3
我正在尝试模拟读取 python3 中的 hdf5 文件以进行测试。该函数控制文件是否包含所有必需的关键字。文件结构为:
- 群组:
parent
- 数据集:
A
- 数据集:
B
我的计划是将 MagicMock 对象用于文件对象和组对象。
测试文件:
def test_checkInput(self):
file = MagicMock()
my_values = MagicMock()
my_values.keys.return_value = ['A', 'B']
file.keys.return_value = {'parent': my_values}
self.assertTrue(reader_class.checkInput(file))
reader_class 是函数 checkInput(file)
所在的模块
已定义
reader_class - 文件
def checkInput(file):
if not file.keys:
return False
if 'parent' in file.keys():
group = file['parent']
if 'A' in group.keys():
if 'B' in group.keys():
return True
else:
print(f"[ {__file__} ] : No Group: 'A'")
return False
else:
print(f"[ {__file__} ] : No Group: 'B'")
return False
else:
print(f"[ {__file__} ] : No Group: 'parent'")
return False
问题是,group.keys()
并不像 checkInput 函数中预期的那样 return ['A', 'B']
。它 return 是一个 MagicMock-Object。如何获取设定值?
问题是,reader_class 文件中的 MagicMock 对象不同。
file.keys()
return 另一个模拟 file['parent']
我找到了一个简单的解决方案:
在 Testfile 中只使用一个 MagicMock 对象并指定 return 值
def test_checkInput(self):
file = MagicMock()
file.keys.return_value = 'parent'
file['parent'].keys.return_value = ['A', 'B']
self.assertTrue(reader_class.checkInput(file))
我正在尝试模拟读取 python3 中的 hdf5 文件以进行测试。该函数控制文件是否包含所有必需的关键字。文件结构为:
- 群组:
parent
- 数据集:
A
- 数据集:
B
- 数据集:
我的计划是将 MagicMock 对象用于文件对象和组对象。
测试文件:
def test_checkInput(self):
file = MagicMock()
my_values = MagicMock()
my_values.keys.return_value = ['A', 'B']
file.keys.return_value = {'parent': my_values}
self.assertTrue(reader_class.checkInput(file))
reader_class 是函数 checkInput(file)
所在的模块
已定义
reader_class - 文件
def checkInput(file):
if not file.keys:
return False
if 'parent' in file.keys():
group = file['parent']
if 'A' in group.keys():
if 'B' in group.keys():
return True
else:
print(f"[ {__file__} ] : No Group: 'A'")
return False
else:
print(f"[ {__file__} ] : No Group: 'B'")
return False
else:
print(f"[ {__file__} ] : No Group: 'parent'")
return False
问题是,group.keys()
并不像 checkInput 函数中预期的那样 return ['A', 'B']
。它 return 是一个 MagicMock-Object。如何获取设定值?
问题是,reader_class 文件中的 MagicMock 对象不同。
file.keys()
return 另一个模拟 file['parent']
我找到了一个简单的解决方案:
在 Testfile 中只使用一个 MagicMock 对象并指定 return 值
def test_checkInput(self):
file = MagicMock()
file.keys.return_value = 'parent'
file['parent'].keys.return_value = ['A', 'B']
self.assertTrue(reader_class.checkInput(file))