setUp:表示前置條件,它在每一個用例執(zhí)行之前必須會執(zhí)行一次
setUp可以理解為我們需要自動化測試時,需要打開網(wǎng)頁窗口,輸入對應(yīng)測試地址,這一些屬于前置條件。
tearDown:表示釋放資源,它在每次用例執(zhí)行完之后會執(zhí)行一次
tearDown可以理解為我們測試完畢后,需要關(guān)閉瀏覽器。
以下示例演示setUp和tearDown的執(zhí)行順序:
#coding:utf-8
import unittest
class Xseq(unittest.TestCase):
def setUp(self):
print "前置測試條件"
def tearDown(self):
print "結(jié)束測試條件"
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()
運行結(jié)果為:

由此可看到運行的順序:
- 每次執(zhí)行函數(shù)方法時,必須先執(zhí)行一次setUp()函數(shù),執(zhí)行完一個函數(shù)方法后,必須再執(zhí)行一次tearDown()函數(shù)
- 執(zhí)行函數(shù)的時候有序號時,例如
testxx1,testxx2會根據(jù)序號來進行執(zhí)行 - 當(dāng)函數(shù)方法不是以
test開頭是,不執(zhí)行該方法。
若我想要改變setUp()在所有用例執(zhí)行之前只執(zhí)行一次,和tearDown()函數(shù)在所有用例執(zhí)行之后只執(zhí)行一次的話
- 需要使用python中的
@classmethod內(nèi)置裝飾器 - 需要把函數(shù)名改為
setUpClass(cls) / tearDownClass(cls)
以下為示例:
#coding:utf-8
import unittest
class Xseq(unittest.TestCase):
@classmethod
def setUpClass(cls):
print "前置測試條件"
@classmethod
def tearDownClass(cls):
print "結(jié)束測試條件"
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()
運行結(jié)果為:
