使用unittest从Python内部类测试方法

时间:2019-05-15 01:36:39

标签: python tdd inner-classes python-unittest

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

我正在尝试使用unittest在Python中执行相同的操作,但似乎内部类的方法未执行。例如:

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执行内部类方法?

2 个答案:

答案 0 :(得分:1)

您可以在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)

答案 1 :(得分:0)

测试运行程序找不到内部类。他们为什么这样嵌套?它没有给你带来任何好处。只需使它们成为所有顶级测试类即可。

相关问题