使用 PyTables 和 HDF5 进行 Python 单元测试

标签 python unit-testing file-io hdf5 pytables

使用文件 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/

相关文章:

javascript - Node.js/Javascript : Failing mocha test with timeout on testing parsing XML to JSON

c++ - 从具有多列整数的文件中读取并将它们放入数组中

c++信号量不考虑调用顺序

python - 如何将字符串复制到剪贴板?

python - 如何使用 Django migrate 命令跳过迁移?

javascript - 在 Rails 中进行 javascript 和 jQuery 测试的 JSpec vs Jasmine vs QUnit

java - 如何通过 PowerMockito 模拟多个静态类

Java 和文件列表

python - MultiIndex DataFrame 中的 Series.fillna() 未填充;这是一个错误吗?

python - Pandas 映射 groupby 在同一数据框中具有多个列