我想设置一个测试并模拟一个从文件中读取属性的调用。我正在使用非标准库
h5py
,但这个问题可能适用于其他数据读取库。例如,我尝试模拟的代码如下所示:
import h5py
with h5py.File('/my/data.h5') as f:
assert f.attrs['short_name'] == 'expected_output'
此参考展示了如何使用
mock_open
将一些文本修补到读取的文件中,但是如何修补更复杂的Python数据结构呢?
如果更简单,我不一定需要获取
h5py
数据结构,我只需要修补对 f.attrs['short_name']
的调用将返回特定的字符串值。有谁知道有什么方法可以做到这一点吗?
我会采用这种方法,至少在一开始是这样的:
def test_get_instruments(self, mocker):
db = mocker.Mock()
sess = Session()
mocker.patch.object(db, "get_session", return_value=sess)
mocker.patch.object(db, "select", return_value=[{"id": 1}])
resp = get_data(db, req.dict())
db.get_session.assert_called_once()
db.select.assert_called_once_with(sess, DataType)
逐步:
如果你想测试一些 h5py 内部结构,你可能会遵循类似的道路