unittest setupClass

问题:为什么unitest中setUpClass在如下代码中会在每个方法之前执行一次呢?setUpClass不是应只在整个类前执行一次吗?

代码如下:

import unittest


class Search:
    def search_fun(self):
        print("search")
        return True


class TestSearch(unittest.TestCase):
    @classmethod
    def setUpClass(cls) -> None:
        cls.search = Search()

    def test_search(self):
        assert True == self.search.search_fun()
        print("testsearch")

    def test_search1(self):
        assert True == self.search.search_fun()
        print("testsearch1")

    def test_search2(self):
        assert True == self.search.search_fun()
        print("testsearch2")


if __name__ == '__main__':
    unittest.main()

运行结果如下:

search
testsearch
search
testsearch1
search
testsearch2
  • 你这个每次都执行的并不是setUpClass里面的语句,而是你自己显式调用的方法search_fun()打印出来的结果
  • 你要是想知道setUpClass里的语句是不是被多次调用了,只需要在setUpClass里面加一句打印看看它执行了几次就知道了

哦哦,明白,谢谢老师。