使用文件 IO 进行单元测试的正确方法是什么,尤其是涉及 PyTables 和 HDF5 时?
我的应用程序围绕将 python 数据存储到 hdf5 文件中以及从 hdf5 文件中检索数据进行发展。到目前为止,我只是自己在单元测试中编写 hdf5 文件并加载它们进行比较。问题是,我当然无法确定当其他人运行测试时他是否具有实际将文件写入硬盘的权限。 (当我想使用像 Jenkins 这样的自动化测试框架时,这可能会变得更糟,但我还没有检查过)。
处理这些情况的正确方法是什么?在很可能授予写访问权限的特定位置创建/tmp/文件夹是最佳实践吗?如果有的话,那是哪里?或者有没有一种简单直接的方法来模拟 PyTables 的写入和读取?
非常感谢!
最佳答案
使用模块“tempfile”来创建文件怎么样?
http://docs.python.org/2/library/tempfile.html
我不知道它是否保证在所有平台上工作,但我打赌它确实在最常见的平台上工作。这肯定比硬编码“/tmp”作为目的地更好。
另一种方法是在内存中创建 HDF5 数据库,这样就不需要文件 I/O。
http://pytables.github.io/cookbook/inmemory_hdf5_files.html
我通过谷歌搜索“内存中的 hdf5”获得了该链接,因此我无法确定它的效果如何。
我认为最佳实践是编写所有测试用例以针对内存数据库和临时文件数据库运行。这样,即使上述技术之一对用户来说失败了,其余的测试仍然会运行。您还可以单独识别错误是否与文件写入或数据库内部的某些内容有关。
关于使用 PyTables 和 HDF5 进行 Python 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19043949/