1. 程式人生 > >如何讓python unittest.TestCase的類下的setUp和tearDown只執行一次

如何讓python unittest.TestCase的類下的setUp和tearDown只執行一次

轉自:https://www.cnblogs.com/UncleYong/p/7076872.html

知道unittest單元測試框架的朋友應該都知道,

執行繼承了unittest.TestCase的類下每個test開頭的方法(就是用例)時,都會執行setUp和tearDown,如下面的例子所示: 


import unittest
 
class TestSetupTeardown(unittest.TestCase):
    def setUp(self):
        print('連線資料庫成功...')
    def tearDown(self):
        print('關閉資料庫。')
 
    def test_a(self):
        print('test_a')
 
    def test_b(self):
        print('test_b')
 
if __name__ == '__main__':
    unittest.main()

setUp連線資料庫,tearDown關閉資料庫,這樣反覆執行,無疑是會增加資料庫伺服器資源的損耗,且浪費時間

能不能只執行一次呢?

答案是肯定的,通過裝飾器就可以實現

import unittest
 
class TestSetupTeardown(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print('連線資料庫成功...')
    @classmethod
    def tearDownClass(cls):
        print('關閉資料庫。')
 
    def test_a(self):
        print('test_a')
 
    def test_b(self):
        print('test_b')
 
if __name__ == '__main__':
    unittest.main()