将自定义Python对象传递给nosetests
我正在尝试重新整理我们的自动化测试库,nose看起来非常有前景。我的问题是,如何将Python对象传递给nose测试是最好的策略?
我们的测试被组织在一个测试库中,里面有很多模块,用来测试不同类型的请求操作。大概是这样的:
testlib
\-testmoda
\-testmodb
\-testmodc
在某些情况下,测试模块(比如testmoda)里面只有test_something()和test_something2()这两个函数,而在其他情况下,我们在testmob中有一个TestModB类,里面有test_anotherthing1()和test_anotherthing2()这两个函数。很酷的是,nose可以轻松找到这两种情况。
这些测试函数大多数是请求工厂的东西,可以轻松共享一个连接到我们的服务器集群。因此,我们会经常调用test_something1(cnn)、TestModB.test_anotherthing2(cnn)等等。
目前我们还没有使用nose,而是有一堆自己写的驱动脚本,里面硬编码了要执行的测试列表。每个驱动脚本都会创建自己的连接对象。维护这些脚本和连接的细节非常麻烦。
我想充分利用nose的强大发现功能,传入我选择的连接对象。
提前谢谢你!
Rob
附言:这些连接对象不能被pickle化。 :(
2 个回答
0
根据我的了解,直接把自定义对象传给Nose并没有简单的方法。
不过,正如Matt提到的,有一些可行的替代方案可以达到类似的效果。
基本上,可以这样做:
- 在包的全局范围内设置一个数据字典
- 把自定义对象添加到这个字典里
- 创建一些工厂函数,用来返回这些自定义对象,或者在合适的情况下创建新的对象
- 重构现有的testlib\testmod*模块,使其使用这些工厂函数
0
你能不能用一个工厂来创建连接,然后让函数 test_something1()
(不需要任何参数)使用这个工厂来获取连接呢?