首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以只运行TestCase或TestSuite (如unittest.main())的子类的测试?

是否可以只运行TestCase或TestSuite (如unittest.main())的子类的测试?
EN

Stack Overflow用户
提问于 2010-06-24 22:37:53
回答 5查看 2.5K关注 0票数 6

我的测试框架目前基于一个test-runner实用程序,它本身是从Eclipse pydev python test-runner派生而来的。我改用Nose,它有我的自定义测试跑步器的许多功能,但似乎是更高质量的代码。

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

我注意到,自从我切换到Nose后,它几乎可以运行任何以"test“开头的东西,这很烦人……因为我们用于测试混合的命名约定看起来也像是一个测试类。以前,这些不会作为测试运行,因为它们不是TestCase或TestSuite的实例。

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

这可以做到吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-06-25 21:57:26

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

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

-m设置该测试,这样您就可以禁用以testMatch开头的任何测试。

另一件事是,您可以将__test__ = False添加到您的测试用例类声明中,以将其标记为“不是测试”。

票数 6
EN

Stack Overflow用户

发布于 2015-04-23 09:06:42

如果你想要一个真正抽象的测试类,你可以从object继承抽象类,然后在测试用例中继承。

例如:

代码语言:javascript
复制
class AbstractTestcases(object):
    def test_my_function_does_something(self):
        self.assertEquals("bar", self.func())

然后将其与以下内容一起使用:

代码语言:javascript
复制
class TestMyFooFunc(AbstractTestcases, unittest.TestCase):
    def setUp(self):
        self.func = lambda: "foo"

然后,nosetests将只提取TestMyFooFunc中的测试用例,而不提取AbstractTestCases中的测试用例。

票数 2
EN

Stack Overflow用户

发布于 2012-11-30 10:36:19

您可以使用unittest.TestCase的--attr参数来指定该属性所拥有的属性。例如,我使用:

代码语言:javascript
复制
nosetests --attr="assertAlmostEqual"

您可以通过使用and和or匹配来更加小心:

代码语言:javascript
复制
nosetests -A "assertAlmostEqual or addTest"

有关方法/属性和Nose的description of the capabilities of the --attr plugin的完整列表,请参阅unittest's documentation

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3110967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档