知道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()
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()