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


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM