如何使用 loadTestsFromTestCase 通过 BaseClass 加载子类?



按照下面的代码,它无法发现子类。

但是我想在testcase_subA中执行测试(test_sub_1,test_sub_2(。

有没有办法通过基类加载子类测试用例? (没有 unittest.main(((

import unittest

class testcase_A(unittest.TestCase):
text= "Base class"
@classmethod
def setUpClass(cls):
print("setUpClass A")
def setUp(self):
print("setUp A")
def tearDown(self):
print("tearDown A")
@classmethod
def tearDownClass(cls):
print("tearDownClass A")

class testcase_subA(testcase_A):
def test_sub_1(self):
print(self.text)
print("test sub A 1")
def test_sub_2(self):
print("test sub A 2")
class testcase_B(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("setUpClass B")
def setUp(self):
print("setUp B")
def test_b(self):
print("test B")
def tearDown(self):
print("tearDown B")
@classmethod
def tearDownClass(cls):
print("tearDownClass B")

if __name__ == '__main__':
suiteA = unittest.TestLoader().loadTestsFromTestCase(testcase_A)
suiteB = unittest.TestLoader().loadTestsFromTestCase(testcase_B)
suite = unittest.TestSuite([suiteA, suiteB])
print(suite)
runner = unittest.TextTestRunner()
runner.run(suite)

输出:

设置上类 B

设置 B

测试 B

拆解乙

拆下B类

因此,您的子类 A 只有在您指定的情况下才会运行。如果你告诉它只运行父类,它只会运行父类。如果您在 A 的父类中有测试,您将看到输出,但没有。因此,当我编辑您的运行器以包含testcase_subA时,我会得到我认为您想要的输出。如果您使用 pytest 或 nose2 等测试模块运行测试,它也会显示相同的内容

if __name__ == '__main__':
suiteA = unittest.TestLoader().loadTestsFromTestCase(testcase_subA)
suiteB = unittest.TestLoader().loadTestsFromTestCase(testcase_B)
suite = unittest.TestSuite([suiteA, suiteB])
print(suite)
runner = unittest.TextTestRunner()
runner.run(suite)

我得到的输出

setUpClass A
setUp A
Base class
test sub A 1
tearDown A
.setUp A
test sub A 2
tearDown A
.tearDownClass A
setUpClass B
setUp B
test B
tearDown B
.tearDownClass B

最新更新