将自定义Python对象传递给nosetests

0 投票
2 回答
523 浏览
提问于 2025-04-16 11:30

我正在尝试重新整理我们的自动化测试库,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提到的,有一些可行的替代方案可以达到类似的效果。

基本上,可以这样做:

  1. 在包的全局范围内设置一个数据字典
  2. 把自定义对象添加到这个字典里
  3. 创建一些工厂函数,用来返回这些自定义对象,或者在合适的情况下创建新的对象
  4. 重构现有的testlib\testmod*模块,使其使用这些工厂函数
0

你能不能用一个工厂来创建连接,然后让函数 test_something1()(不需要任何参数)使用这个工厂来获取连接呢?

撰写回答