将数据传递到Python单元测试重定向的STDIN或Pickle中,哪种方法更好?


问题内容

简短问题
将数据放入Python单元测试用例的最佳方法是什么?

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

需要传递的数据包括序列号,测试板的日期,日期以及其他类似性质的内容。值得注意的是,测试板的顺序是由从盒子中拉出板X的人员选择的,因此无法预测序列号。

想法
目前,我正在通过pickle在测试案例之间传递所需的数据。这种方法在小型测试中效果很好,但我担心的是,对同一文件进行100k次读写操作会给数据损坏留出很大的空间(而且速度不是很快)。我写了一个SO问题的答案,该问题以一种我认为也可以很好地应用于此应用程序的方式重定向标准输入。

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

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

任何想法或意见将不胜感激。


问题答案:

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

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

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

这是示例:

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

作为一个更大的问题,我认为尝试强制执行单元测试模块来执行最初不应该执行的操作不是一个好主意。也许您应该尝试编写自己的单元测试运行程序,以便在某处进行必要的准备工作(获取信息,存储结果)。