将数据传递到Python Unittest Redirected STDIN或Pickle的更好方法是什么?

时间:2011-04-29 16:45:10

标签: python unit-testing redirect stdin pickle

简短问题
将数据导入Python unittest案例的最佳方法是什么?

背景
我的项目使用Python的unittest模块作为一种自动方式执行一系列需要在许多相同类型的板上运行的测试。到目前为止,这非常适合单元测试模块的设计;扭曲是每个测试用例需要知道运行特定信息以存储在Django数据库中。

需要传递的数据包括一个序列号,谁测试了电路板,日期和其他这种性质的东西。值得注意的是,测试电路板的顺序是由从电路板上拉出电路板X的人选择的,因此不可能预测序列号。

思想
目前,我通过pickle将所需数据传递给测试用例。这种方法在小型测试中运行良好,但我担心的是读取和写入同一个文件100k +次会给数据损坏提供大量空间(+它不是那么快)。我写了一个SO Question的答案,它以我认为可能适用于此应用程序的方式重定向标准输入。

下一步是围绕这些测试包装GUI。个人目标是能够通过命令行运行测试,然后让GUI调用相同的命令行函数。出于这个原因,我倾向于转向重定向的标准输入。

系统/部署信息
所需的操作系统支持:Windows XP和Windows 7
理想的操作系统支持:Mac OS X和Linux
Python版本:2.7

任何想法或评论都将不胜感激。

1 个答案:

答案 0 :(得分:2)

我创建了针对第三方服务(Zoho CRM)进行测试的单元测试。要测试服务API,您需要存储用户名和密码crendetials。

由于这是高级服务而您正在创建开源软件,因此您无法将登录凭据硬编码为源代码本身。

所以我最终使用了环境变量 - 工作得很好:

以下是示例:

https://github.com/miohtama/mfabrik.zoho/blob/master/mfabrik/zoho/tests.py

作为一个更大的问题,我认为尝试强制执行单元测试模块来做一些本来不应该做的事情并不是一个好主意。也许你应该尝试编写自己的单元测试运行器,它可以在某处做必要的准备(拉动信息,存储结果)。