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