我的测试框架目前基于一个测试运行器实用程序,该实用程序本身派生自 Eclipse pydev python 测试运行器。我转而使用 Nose,它具有我的自定义测试运行程序的许多功能,但似乎是质量更好的代码。
我的测试套件包括许多以前从未运行过的抽象测试类。标准的 python 测试运行器(和我的自定义测试运行器)只运行 unittest.TestCase 和 unittest.TestSuite 的实例。
我注意到,自从我切换到 Nose 后,它几乎运行任何以名称“test”开头的东西,这很烦人......因为我们用于测试混合的命名约定看起来也像 Nose 的测试类.以前这些从未作为测试运行,因为它们不是 TestCase 或 TestSuite 的实例。
显然,我可以重命名这些方法以从它们的名称中排除“测试”一词……这需要一段时间,因为测试框架非常大并且有很多继承。另一方面,如果有一种方法可以使 Nose 仅将 TestCases 和 TestSuites 视为可运行的……而没有其他任何东西,那将是很好的。
这可以做到吗?
最佳答案
您可以尝试为 nosetests
使用 -m
选项。来自文档:
A test class is a class defined in a test module that matches testMatch or is a subclass of unittest.TestCase
-m
设置 testMatch
,这样您就可以禁用以 test 开头的任何测试。
另一件事是,您可以将 __test__ = False
添加到您的测试用例类声明中,以将其标记为“不是测试”。
关于python - 是否可以让 Nose 只运行 TestCase 或 TestSuite 子类的测试(如 unittest.main()),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3110967/