python+selenium自動化測試-23setUp()和tearDown()及setUpClass()和tearDownClass()的配對使用

① setUp():每個測試函數運行前運行
② tearDown():每個測試函數運行完後執行
③ setUpClass():必須使用@classmethod 裝飾器,所有test運行前運行一次
④ tearDownClass():必須使用@classmethod裝飾器,所有test運行完後運行一次

由上可見,setUp()相當於測試用例的前置條件,tearDown()相當於測試用例的執行後對數據及環境的後期處理。

1、setUpClass()和tearDownClass()

import unittest
class TestDemo(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print("setupclass")

    def test_A(self):
        print("test_A")

    def test_a(self):
        print("test_a")

    def test_2(self):
        print("test_2")

    def gest_3(self):#故意將test寫成gest,看是否會被執行
        print("gest_3")

    @classmethod
    def tearDownClass(cls):
        print("teardownclass")

if __name__ == '__main__':
        unittest.main()
運行結果:
...
---------------------------------------------------------------
Ran 3 tests in 0.000s

OK
setupclass
test_2
test_A
test_a
teardownclass

Process finished with exit code 0

2、setUp()和tearDown()

import unittest
class TestDemo(unittest.TestCase):
    def setUp(self):
        print("setUp")

    def test_A(self):
        print("test_A")

    def test_a(self):
        print("test_a")

    def test_2(self):
        print("test_2")

    def gest_3(self):#故意將test寫成gest,看是否會被執行
        print("gest_3")

    def tearDown(self):
        print("tearDown")

if __name__ == '__main__':
        unittest.main()
運行結果:
...
---------------------------------------------------------------
Ran 3 tests in 0.000s

OK
setUp
test_2
tearDown
setUp
test_A
tearDown
setUp
test_a
tearDown

Process finished with exit code 0

從上面兩個示例可以看到,每運行一個用例,都會執行一次setUp()和tearDown()方法;而執行所有用例,setUpClass()和tearDownClass()只需要執行一次。不難看出,後者配對使用最大的優勢是節省測試時間,主要體現在兩個方面:(1)不需要反覆地打開瀏覽器操作(2)只需要建立一次數據庫連接,並進行清理。

值得注意的是:在setUpClass()和tearDownClass()時,千萬不要忽略了用例直接的相互影響,要充分考慮到用例之間的耦合

發佈了53 篇原創文章 · 獲贊 15 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章