讓一個繼承unittest.TestCase的類下的setUp和tearDown只執行一次

原文鏈接:https://www.cnblogs.com/UncleYong/p/7076872.html

【問題】:

在unittest單元測試框架中,執行繼承了unittest.TestCase的類下每個test開頭的方法(就是用例)時,都會執行setUp和tearDown(代碼如下),很麻煩。

能否讓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關閉數據庫,這樣反覆執行,無疑是會增加數據庫服務器資源的損耗,且浪費時間

【解決方案】:

將setup()  和teardown() 換成setUpClass()和tearDownClass()

【注意事項】:

setUpClass():必須使用@classmethod 裝飾器,  所有case運行之前只運行一次
tearDownClass():必須使用@classmethod裝飾器, 所有case運行完之後只運行一次

代碼與執行效果如下:

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章