是否可以使Nose只运行TestCase或TestSuite的子类(如unittest.main())

Sal*_*ley 6 python unit-testing nose

我的测试框架目前基于一个测试运行器实用程序,它本身来自Eclipse pydev python test-runner.我正在转向使用Nose,它具有我的自定义测试运行器的许多功能,但似乎是更好的质量代码.

我的测试套件包括许多以前从未运行过的抽象测试类.标准的python testrunner(和我的自定义的)只运行了unittest.TestCase和unittest.TestSuite的实例.

我注意到,因为我切换到Nose,它运行的任何东西都以名称"test"开头,这很烦人...因为我们用于test-mixins的命名约定看起来像是Nose的测试类.以前这些从未作为测试运行,因为它们不是TestCase或TestSuite的实例.

显然,我可以重命名方法,从名称中排除"test"这个词......这需要一段时间,因为测试框架非常大,并且有很多继承.另一方面,如果有一种方法可以让Nose只看到TestCases和TestSuites是可运行的......那就没有别的了.

可以这样做吗?

nkr*_*rkv 6

您可以尝试使用-m选项nosetests.来自文档:

测试类是在测试模块中定义的类,它匹配testMatch或是unittest.TestCase的子类

-m设置testMatch,这样你可以禁用从test开始的任何测试.

另一件事是你可以添加__test__ = False到你的测试用例类声明,标记它"不是测试".