setUp:表示前置條件,它在每一個用例執行之前必須會執行一次
setUp可以理解為我們需要自動化測試時,需要打開網頁窗口,輸入對應測試地址,這一些屬於前置條件。
tearDown:表示釋放資源,它在每次用例執行完之后會執行一次
tearDown可以理解為我們測試完畢后,需要關閉瀏覽器。
以下示例演示setUp和tearDown的執行順序:
#coding:utf-8 import unittest class Xseq(unittest.TestCase): def setUp(self): print "前置測試條件" def tearDown(self): print "結束測試條件" def testadd(self): print '1+1=',1+1 def testsub2(self): print '3-2=',3-2 def testsub1(self): print '3-3=',3-3 def mul(self): print '3*1',3*1 if __name__=="__main__": unittest.main()
運行結果為:
由此可看到運行的順序:
1. 每次執行函數方法時,必須先執行一次setUp()函數,執行完一個函數方法后,必須再執行一次tearDown()函數
2. 執行函數的時候有序號時,例如testxx1,testxx2 會根據序號來進行執行
3. 當函數方法不是以test開頭是,不執行該方法。
若我想要改變setUp()在所有用例執行之前只執行一次,和tearDown()函數在所有用例執行之后只執行一次的話
1. 需要使用python中的@classmethod內置裝飾器
2. 需要把函數名改為setUpClass(cls) / tearDownClass(cls)
以下為示例:
#coding:utf-8 import unittest class Xseq(unittest.TestCase): @classmethod def setUpClass(cls): print "前置測試條件" @classmethod def tearDownClass(cls): print "結束測試條件" def testadd(self): print '1+1=',1+1 def testsub2(self): print '3-2=',3-2 def testsub1(self): print '3-3=',3-3 def mul(self): print '3*1',3*1 if __name__=="__main__": unittest.main()
運行結果為: