将自定义Python对象传递给nosetests

时间:2011-02-09 04:20:21

标签: python testing automation nose nosetests

我正在尝试重新组织我们的测试库以实现自动化,而鼻子似乎真的很有希望。我的问题是,将Python对象传递给鼻子测试的最佳策略是什么?

我们的测试是在一个testlib中组织的,其中包含一系列执行不同类型请求操作的模块。像这样:

testlib
\-testmoda
\-testmodb
\-testmodc

在某些情况下,测试模块(即testmoda)只不过是test_something(),test_something2()函数,而在某些情况下,我们在testmob中有一个带有test_anotherthing1(),test_anotherthing2()函数的TestModB类。很酷的是,鼻子很容易找到两者。

大多数测试功能都是请求工厂的东西,可以轻松共享到我们的服务器场的单个连接。因此我们做了很多test_something1(cnn),TestModB.test_anotherthing2(cnn)等。

目前我们不使用nose,而是我们有一个本土驱动程序脚本的大杂烩,其中包含要执行的硬编码测试列表。每个驱动程序脚本都创建自己的连接对象。维护这些脚本和连接细节很痛苦。

我想利用鼻子的漂亮发现功能,传递我选择的连接对象。

提前致谢!

罗布

P.S。连接对象不可拾取。 :(

2 个答案:

答案 0 :(得分:0)

您是否可以使用工厂创建连接,然后使用函数test_something1()(不带参数)使用工厂来建立连接?

答案 1 :(得分:0)

据我所知,没有简单的方法可以简单地将自定义对象传递给Nose。

然而,正如Matt指出的那样,有一些可行的解决方法可以达到类似的效果。

基本上,这样做:

  1. 将数据字典设置为包级别全局
  2. 将自定义对象添加到该词典
  3. 创建一些工厂函数以返回这些自定义对象,或者创建新的自定义对象(如果它们存在/适合
  4. 重构现有的testlib \ testmod *模块以使用工厂