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

2024-04-19 15:36:55 发布

您现在位置:Python中文网/ 问答频道 /正文

如下代码所示,它无法发现子类

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

是否有任何方法可以通过基类加载子类testcase? (不带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)

输出:

setUpClass B

setUp B

test B

tearDown B

tearDownClass B


Tags: testselfdefsetupunittest子类testcaseclass
1条回答
网友
1楼 · 发布于 2024-04-19 15:36:55

因此,只有您指定了子流程,子流程才会运行。如果您告诉它只运行父类,它将只运行父类。如果在的父类中有测试,则会看到输出,但不会看到。因此,当我编辑您的运行程序以包含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

相关问题 更多 >