unittest使用步驟
1.導(dǎo)入unittest模塊
2.定義一個(gè)繼承自u(píng)nittest.TestCase的測(cè)試用例類,如class xxx(unittest.TestCase):
3.定義setUp和tearDown,如果定義了則會(huì)在每個(gè)測(cè)試case執(zhí)行前先執(zhí)行setUp方法,執(zhí)行完畢后執(zhí)行tearDown方法。
4.定義測(cè)試用例,名字以test開頭,unittest會(huì)自動(dòng)將test開頭的方法放入測(cè)試用例集中。
5.一個(gè)測(cè)試用例應(yīng)該只測(cè)試一個(gè)方面,測(cè)試目的和測(cè)試內(nèi)容應(yīng)很明確。主要是調(diào)用assertEqual、assertRaises等斷言方法判斷程序執(zhí)行結(jié)果和預(yù)期值是否相符。
6.調(diào)用unittest.main()啟動(dòng)測(cè)試,或?qū)嵗痳unner對(duì)象執(zhí)行測(cè)試集、測(cè)試函數(shù)
7.如果測(cè)試未通過,則會(huì)顯示e,并給出具體的錯(cuò)誤(此處為程序問題導(dǎo)致)。如果測(cè)試失敗則顯示為f,測(cè)試通過為.,如有多個(gè)testcase,則結(jié)果依次顯示。
示例
import unittest
class TestAdd(unittest.TestCase):
@classmethod
def setUpClass(cls):
"""setUpClass為類的初始化方法,在整個(gè)類運(yùn)行前執(zhí)行只執(zhí)行一次"""
print('setUpClass')
def setUp(self):
"""為測(cè)試方法的初始化,每個(gè)text函數(shù)運(yùn)行前執(zhí)行一次"""
self.a = 20
self.b = 10
print('setUp')
def tearDown(self):
"""清理函數(shù),和setUp類似,每個(gè)text函數(shù)執(zhí)行后執(zhí)行一次"""
print('tearDown')
@classmethod
def tearDownClass(cls):
"""和setUpclass類似,在調(diào)用整個(gè)類測(cè)試方法完成后執(zhí)行一次"""
print('tearDownClass')
def test_add(self):
"""驗(yàn)證加法"""
result = self.a + self.b
self.assertEqual(result, 30)
print('test_add')
def test_sub(self):
"""驗(yàn)證減法"""
result = self.a - self.b
self.assertEqual(result, 10)
print('test_sub')
if __name__ == "__main__":
unittest.main()
- 在pycharm中右鍵運(yùn)行的位置不同,結(jié)果也不同
- 想要完整運(yùn)行,鼠標(biāo)放在最后一行代碼的位置,再右鍵運(yùn)行
- unittest默認(rèn)加載腳本的順序是:根據(jù)ASCII碼的順序加載,數(shù)字與字母的順序?yàn)椋?-9,A-Z,a-z。