Python unittest中初始化固件setUp和销毁固件tearDown详解
unittest.TestCase 包含了?setUp()?和?tearDown()?兩個方法,其中 setUp() 方法用于初始化測試固件;而 tearDown() 方法用于銷毀測試固件。程序會在運行每個測試用例(以 test_ 開頭的方法)之前自動執行 setUp() 方法來初始化測試固件,井在每個測試用例(以 test_ 開頭的方法)運行完成之后自動執行 tearDown() 方法來銷毀測試固件。
setUp()和tearDown()函數
????setUp()函數是在眾多函數或說是在一個類里最先被調用的函數,每執行完一個函數都要從setUp()調用開始后再執行下一個函數,有幾個函數幾次,與位置無關,隨便放在那里都是他先被調用。
?????tearDown()函數是在眾多函數執行完后他才被執行,不管這個類里面有多少函數,他總是最后一個被執行,與位置無關,放在那里都行,最后不管測試函數是否執行成功都執行tearDown()方法;如果setUp()方法失敗,則認為這個測試項目失敗,不會執行測試函數也不執行tearDown()方法。
1、setUp()和tearDown()方法都是非必要條件,如果沒有也可以寫pass
2、setUp()和tearDown()方法每個測試用例都會執行,先執行前置setUp,然后執行的用例(test*),最后執行的后置tearDown
3、setUp():setUp()方法用于測試用例執行前初始化工作。如測試用例中需要訪問數據庫,可以在setUp中建立數據庫連接并進行初始化。如測試用例需要登錄web,可以先實例化瀏覽器
4、tearDown():tearDown()方法用于測試用例執行之后的善后工作。如關閉數據庫連接、關閉瀏覽器
?
unittest 在運行每個測試用例(以 test_ 開頭的方法)之前都執行了 setUp() 方法,在每個測試用例(以 test_ 開頭的方法)運行完成之后都執行了 tearDown() 方法,setUp() 方法和tearDown() 方法執行多次
#!/usr/bin/env python # _*_coding:utf-8_*_ import unittest class Test(unittest.TestCase):def setUp(self):print("執行setUp初始化固件")def tearDown(self):print("調用tearDown銷毀固件")def test_001_a(self):print("this is test_001_a用例")def test_002_b(self):print("this is test_002_b用例")def test_003_a(self):print("this is test_003_a用例")def login(self):print("this is login用例") if __name__ == '__main__':unittest.main()"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/Test/test02.py ... 執行setUp初始化固件 this is test_001_a用例 ---------------------------------------------------------------------- 調用tearDown銷毀固件 Ran 3 tests in 0.000s 執行setUp初始化固件this is test_002_b用例 OK 調用tearDown銷毀固件 執行setUp初始化固件 this is test_003_a用例 調用tearDown銷毀固件Process finished with exit code 0setUpClass() 方法和tearDownClass()前加了@classmethod, unittest 在運行(以 test_ 開頭的方法)測試用例之前執行setUpClass() 方法1次,最后運行完成(以 test_ 開頭的方法)之后執行?tearDownClass() 方法1次,setUpClass() 方法和tearDownClass() 方法分別執行1次
?
#!/usr/bin/env python # _*_coding:utf-8_*_ import unittest class Test(unittest.TestCase):@classmethoddef setUpClass(cls):print("執行setUpClass初始化固件")@classmethoddef tearDownClass(cls):print("調用tearDownClass銷毀固件")def test_001_a(self):print("this is test_001_a用例")def test_002_b(self):print("this is test_002_b用例")def test_003_a(self):print("this is test_003_a用例")def login(self):print("this is login用例") if __name__ == '__main__':unittest.main()"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/Test/test02.py ... ---------------------------------------------------------------------- Ran 3 tests in 0.000sOK 執行setUpClass初始化固件 this is test_001_a用例 this is test_002_b用例 this is test_003_a用例 調用tearDownClass銷毀固件Process finished with exit code 0?
總結
以上是生活随笔為你收集整理的Python unittest中初始化固件setUp和销毁固件tearDown详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mitmproxy抓包 | Python
- 下一篇: 【Python】import自己的模块报