一、什么是unittest
TestCase:
測試環(huán)境的搭建(setup)
執(zhí)行測試代碼(run)
測試環(huán)境的還原(tearDown)
Test suite:多個測試結合在一起就是TestSuit,TestSuit可以嵌套TestSuit
Testrunner:用來執(zhí)行測試用例
TestLoader:是用來加載TestCase到TestSuit中的,其中有幾個loadTestsFrom__()方法,就是從各個地方尋找TestCase,來創(chuàng)建他們的實例,然后add到TestSuit中,再放回一個TestSuit實例。
Test fixture:對一個測試用例環(huán)境的搭建和銷毀,是一個fixture通過覆蓋TestCase()和tearDown()方法來實現(xiàn)。
二、步驟
編寫一個python類,繼承unittest模塊中的TesetCase類,這就是一個測試類
在上面編寫的測試類中定義測試方法(這個就是指測試用例),每個方法的方法名都要求以test打頭,沒有額外的參數(shù)。在該測試方法中調用被測試代碼,校驗測試結果,TestCase類中提供了很多標準的檢驗方法,如常見的assertEqual。
執(zhí)行unittest.main(),該函數(shù)會負責運行測試,它會實例化所有testCase的子類,并運行其中所有以test打頭的方法。
三、簡單用法
用import unittest導入unittest模塊
定義一個繼承自unittest.TestCase的測試用例,如class xxx(unittest.TestCae)
定義setUp和tearDown,這兩個方法與junit相同,即如果定義了則會在每個測試case執(zhí)行setUP方法,執(zhí)行完畢后執(zhí)行tearDown方法。
定義測試用例,名字以test開頭,unittest會自動將test開頭的方法放入測試用例集中。
一個測試用例應該只測試一個方面,測試目的和測試內(nèi)容應很明確,主要是調用assertEqual、assertRaises等斷言方法判斷程序執(zhí)行結果和預期值是否相符
調用unittest.main()啟動測試
如果測試通過,則會顯示e,并給出具體的錯誤,如果測試測試失敗則顯示為f,如果測試通過為.,如有多個testcase,則結果依次顯示
四、unittest.main()常用方法
assertEqual(a,b)a==b
?
assertNotEqual(a,b)a!=b
?
assertTrue(x)bool(x)isTrue
?
assertFalse(x)bool(x)isFalse
?
assertIs(a,b)aisb
?
assertIsNot(a,b)aisnotb
?
asertIsNone(x)? ? xisNone
?
assertIn(a,b)? ? ? ainb
?
assertNotIn(a,b)? ? anotinb
?
assertIsInstance(a,b)isinstance(a,b)
?
assertNotIsInstance(a,b)notisinstance(a,b)

主要用到的函數(shù)有:
failedinfo表示不成立打印信息failedinfo,為可選參數(shù)
self.fail([msg])會無條件的導致測試失敗,不推薦使用。
self.assertEqual(value1, value2, failedinfo) # 斷言value1 == value2
self.assertTrue(表達式, failedinfo) # 斷言value為真
self.assertFalse(表達式, failedinfo) # 斷言value為假