首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用PyTables和HDF5进行Python测试

用PyTables和HDF5进行Python测试
EN

Stack Overflow用户
提问于 2013-09-27 06:19:51
回答 2查看 892关注 0票数 2

使用文件IO进行单元测试的正确方法是什么,特别是当涉及到PyTables和HDF5时?

我的应用程序是围绕着从hdf5文件中存储和检索python数据而发展起来的。到目前为止,我只需自己编写单元测试中的hdf5文件,并加载它们进行比较。问题是,当其他人运行测试时,我无法确定他是否拥有将文件实际写入硬盘的权限。(当我想使用像Jenkins这样的自动化测试框架时,情况可能会更糟,但我还没有检查过)。

处理这些情况的正确方法是什么?在很可能授予写入访问权限的特定位置创建/tmp/文件夹是最佳实践吗?如果是的话,那是哪里呢?还是有一种简单而直接的方式来模拟PyTables的写作和阅读呢?

非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-27 09:13:03

如何使用模块"tempfile“来创建这些文件?

http://docs.python.org/2/library/tempfile.html

我不知道它是否保证在所有平台上都能工作,但我敢打赌,它确实适用于大多数常见的平台。这肯定比硬编码"/tmp“作为目的地更好。

另一种方法是在内存中创建一个HDF5数据库,这样就不需要文件I/O。

files.html

我通过谷歌搜索“内存中的hdf5”获得了这个链接,所以我无法确定它的工作效果如何。

我认为最好的做法是编写所有的测试用例,以同时运行内存中的数据库和tempfile数据库。这样,即使上述技术之一对用户失败,其余的测试仍将运行。此外,您还可以单独识别bug是否与文件写入有关,还是与数据库内部的内容有关。

票数 1
EN

Stack Overflow用户

发布于 2013-09-27 15:58:42

从根本上讲,HDF5和Pytables是I/O库。它们为文件系统操作提供了一个API。因此,如果您真的想测试PyTables / HDF5,就必须访问文件系统。这是无可奈何的。如果用户在系统上没有写访问权限,则无法运行测试。或者至少他们不能进行现实的测试。

您可以使用内存中的文件驱动程序进行测试。这对于加速大多数测试和测试更高级别的功能非常有用。然而,即使你走了这条路,你也应该有一些实际写出真正文件的测试。如果这些都失败了,你就会知道出了什么问题。

通常,人们会在测试目录中创建临时h5文件。但是,如果您真的担心用户没有对这个dir的写访问权限,那么应该使用tempfile.gettempdir()来找到他们环境中正确的/tmp dir。请注意,这是跨平台的,所以应该在任何地方都能工作。将您创建的h5文件放在那里,并记住之后删除它们!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19043949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档