一、Unittest介紹html
爲何要學習單元測試框架
測試用例的組織與運行須要單元測試框架的參與,從而知足不一樣測試場景的須要,單元測試框架提供了豐富的比較方法:實際結果與預期結果的對比==測試結果
單元測試框架提供了豐富的日誌:給出測試用例失敗與經過的數目及執行失敗的緣由
常見的單元測試框架有哪些
Doctest、unittest、pytest、nose等等
Java--》junit(testng)、C++--》 googleTest、c#--》nunitpython
二、Unittest核心組件c#
三、Unittest工做原理瀏覽器
Testcase:一個 testcase 就是一個測試用例。Setup(測試環境的準備)、run(測試執行)、teardown(測試環境的還原)。
Testsuite(集合或套件):多個測試用例的集合就是 suite,一個suite能夠包含多個測試用例,也能夠嵌套 suite。
TestLoader:用來加載 testcase到testsuite 中的。
TestTestRunner:用例執行測試用例(run 方法),測試結果會保存在 TestTestresult 中。
fixture:一個測試用例環境的搭建和銷燬。框架
四、Unittest單元測試用例的組織less
構建單元測試用例
場景:以字符串替換舉例函數
五、構建測試套件(優化測試用例)單元測試
單元測試用例的增多,在各個測試代碼中會有不少類似的操做,考慮setUp(測試環境的準備)、tearDown(測試環境的還原)學習
六、組織多個測試用例(深度優化測試用例)測試
測試用例的繼續優化:全部的測試用例不須要都用單獨的類進行存放,該方式比較耗時,經過test開頭的函數來存放測試用例。
七、構建測試套件
多個測試用例的集合就是suite,一個suite能夠包含多個測試用例,也能夠嵌套suite。
八、測試套件優化
執行部分測試用例
執行某測試類下的所有測試用例,unittest模塊中提供一個makesuite
九、多個測試類的控制
十、執行測試
首先將StringReplaceTestCase放在單獨的一個py文件中StringReplace.py
將註釋放在方法內,做爲方法的說明。
執行部分測試用例,建立一個test_suite.py,用戶控制措施用例的執行
運行所有測試用例。
十一、測試用例的跳過
修改StringReplace文件,理解skip、skipif、skipunless
十二、Unittest框架總結
unittest.TestCase:TestCase類,全部測試用例類繼承的基本類。class Test(unittest.TestCase):
unittest.main():使用能夠方便的將一個單元測試模塊變爲可直接運 行的測試腳本
unittest.TestSuite():unittest框架的TestSuite()類是用來建立 測試套件的。
unittest.TextTestRunner():unittest框架的TextTestRunner()類, 經過該類下面的run()方法來運行suite所組裝的測試用例,入參爲 suite測試套件。
unittest.skip():裝飾器,當運行用例時,有些用例可能不想執行,可用裝飾器 暫時屏蔽該條測試用例。常見的用法如想調試某一測試用例,可先屏蔽其餘用例
@unittest.skip(reason): skip(reason)裝飾器:無條件跳過裝飾的測試,並說 明跳過測試的緣由。
@unittest.skipIf(reason): skipIf(condition,reason)裝飾器:條件爲真時, 跳過裝飾的測試,並說明跳過測試的緣由。
@unittest.skipUnless(reason): skipUnless(condition,reason)裝飾器:條件 爲假時,跳過裝飾的測試,並說明跳過測試的緣由
setUp()方法用於測試用例執行前的初始化工做。如測試用 例中須要訪問瀏覽器,能夠在setUp中實例化瀏覽器驅動。
tearDown():tearDown()方法用於測試用例執行以後的善後工做、關 閉瀏覽器。
斷言方法:在執行測試用例的過程當中,最終用例是否執行經過,是通 過判斷測試獲得的實際結果和預期結果是否相等決定的。
assertEqual(a,b,[msg='測試失敗時打印的信息']):斷言a和b是否相等,相等則測試用例通 過。
assertNotEqual(a,b,[msg='測試失敗時打印的信息']):斷言a和b是否相等,不相等則測試 用例經過。
assertTrue(x,[msg='測試失敗時打印的信息']):斷言x是否True,是True則測試用例經過。
addTest(): 方法是將測試用例添加到測試套件中。
run(): 方法是運行測試套件的測試用例,入參爲suite測試套件
1三、HTML報告介紹
HTMLTestRunner是Python的標準庫unittest單元測試框架的一個擴 展,用於生成HTML測試報告
下載地址: http://tungwaiyip.info/software/HTMLTestRunner.html
1四、HTML測試結果
HTMLTestRunner.py下載地址http://tungwaiyip.info/software/HTMLTestRunner.html
HTMLTestRunner.py的存放路徑,是放在C:\Users\Administrator\AppData\Local\Programs\Python37\Lib
HTMLTestRunner.py是基於python2*開發的,要想可以在python3上使用,須要修改該文件。
修改彙總:
第94行,將import StringIO修改爲import io
第539行,將self.outputBuffer = StringIO.StringIO()修改爲self.outputBuffer = io.StringIO()
第642行,將if not rmap.has_key(cls):修改爲if not cls in rmap:
第766行,將uo = o.decode('latin-1')修改爲uo = e
第772行,將ue = e.decode('latin-1')修改爲ue = e
第631行,將print >> sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime)修改爲print(sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime))
基於test_suite文件進行HTML報告生成,存放到D盤名爲result.html