我目前有几个单元测试共享一组公共测试。以下是一个示例:
import unittest
class BaseTest(unittest.TestCase):
def testCommon(self):
print 'Calling BaseTest:testCommon'
value = 5
self.assertEquals(value, 5)
class SubTest1(BaseTest):
def testSub1(self):
print 'Calling SubTest1:testSub1'
sub = 3
self.assertEquals(sub, 3)
class SubTest2(BaseTest):
def testSub2(self):
print 'Calling SubTest2:testSub2'
sub = 4
self.assertEquals(sub, 4)
if __name__ == '__main__':
unittest.main()
以上代码的输出为:Calling BaseTest:testCommon
.Calling BaseTest:testCommon
.Calling SubTest1:testSub1
.Calling BaseTest:testCommon
.Calling SubTest2:testSub2
.
----------------------------------------------------------------------
Ran 5 tests in 0.000s
OK
有没有一种方法可以重写上面的代码,以便第一个testCommon
不被调用?编辑:不是运行上面的 5 个测试,我只想运行 4 个测试,其中两个来自 SubTest1,另外两个来自 SubTest2。似乎 Python 的 unittest 自己在运行原始的 BaseTest,我需要一种机制来防止这种情况发生。
setUpClass
并引发SkipTest
是相当不错的解决方法,但测试运行器会显示跳过的测试。其他框架通过添加__abstract__ = True
来解决这些问题。难道还没有更好的解决方法吗? - Matthew Moisen