一设捐、什么是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()方法來實現述召。
二朱转、步驟
編寫一個python類,繼承unittest模塊中的TesetCase類积暖,這就是一個測試類
在上面編寫的測試類中定義測試方法(這個就是指測試用例)藤为,每個方法的方法名都要求以test打頭,沒有額外的參數夺刑。在該測試方法中調用被測試代碼缅疟,校驗測試結果,TestCase類中提供了很多標準的檢驗方法遍愿,如常見的assertEqual存淫。
執(zhí)行unittest.main(),該函數會負責運行測試沼填,它會實例化所有testCase的子類桅咆,并運行其中所有以test打頭的方法。
三坞笙、簡單用法
用import unittest導入unittest模塊
定義一個繼承自unittest.TestCase的測試用例岩饼,如class xxx(unittest.TestCae)
定義setUp和tearDown,這兩個方法與junit相同薛夜,即如果定義了則會在每個測試case執(zhí)行setUP方法籍茧,執(zhí)行完畢后執(zhí)行tearDown方法。
定義測試用例却邓,名字以test開頭硕糊,unittest會自動將test開頭的方法放入測試用例集中。
一個測試用例應該只測試一個方面腊徙,測試目的和測試內容應很明確简十,主要是調用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)
主要用到的函數有:
failedinfo表示不成立打印信息failedinfo,為可選參數
self.fail([msg])會無條件的導致測試失敗牵署,不推薦使用漏隐。
self.assertEqual(value1, value2, failedinfo) # 斷言value1 == value2
self.assertTrue(表達式, failedinfo) # 斷言value為真
self.assertFalse(表達式, failedinfo) # 斷言value為假