Python setUp()框架中的setUpClass()unittest有什么区别?为什么要用一种方法而不是另一种方法来处理设置?

我想了解在setUp()setUpClass()函数以及tearDown()tearDownClass()中完成设置的哪一部分。

最佳答案

当您的类中有多个测试方法时,差异就会显现出来。 setUpClasstearDownClass在整个类中运行一次; setUptearDown在每种测试方法之前和之后运行。

例如:

class Example(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print("setUpClass")

    def setUp(self):
        print("setUp")

    def test1(self):
        print("test1")

    def test2(self):
        print("test2")

    def tearDown(self):
        print("tearDown")

    @classmethod
    def tearDownClass(cls):
        print("tearDownClass")

运行此测试时,它会打印:
setUpClass
setUp
test1
tearDown
.setUp
test2
tearDown
.tearDownClass

(测试通过时,点(.)是unittest的默认输出。)观察到setUptearDowntest1test2之前和之后出现,而setUpClasstearDownClass在整个测试用例的开头和结尾仅出现一次。

10-06 08:40