如何使用 Unittest 在 Python 中编写内部 class 测试方法

How to write inner class test method in Python with Unittest

在 Java 中进行单元测试时,通常会有一个测试 class,其中包含要测试 class 的每个方法的多个内部 classes。每个内部 class 可以有多个测试方法来测试相关方法的特定功能。

我试图在 Python 中用 unittest 做同样的事情,但似乎没有执行内部 classes 的方法。例如:

import unittest

class OuterTestClass(unittest.TestCase):

    print("start outer class")

    def test_should_do_something(self):

            self.assertTrue( True )

            print("outer method test completed")

    class InnerTestClass(unittest.TestCase):

        print("start inner class")

        def test_should_do_something(self):

            self.assertTrue( True )

            print("inner method test completed")


预期行为:

> start outer class
> start inner class
> inner method test completed
> outer method test completed

实际行为:

> start outer class
> start inner class
> outer method test completed

是否可以使用 unittest 执行内部 class 方法?

您可以在 OuterTestClass 中创建一个新的测试方法,它构建了一套 InnerTestClass 中包含的所有测试用例。

class OuterTestClass(TestCase):

    print("start outer class")

    def test_should_do_something(self):

        self.assertTrue( True )

        print("outer method test completed")

    class InnerTestClass(TestCase):

        print("start inner class")

        def test_should_do_something(self):

            self.assertTrue( True )

            print("inner method test completed")

    def test_inner_test_class(self):
        suite = unittest.defaultTestLoader.loadTestsFromTestCase(self.InnerTestClass)
        unittest.TextTestRunner().run(suite)