1、unittest簡介
UnitTest是Python自帶的一個單元測試框架,用它來做單元測試。也經常應用到UI自動化測試和接口自動化測試中,用來管理和維護測試用例腳本
使用UnitTest框架的好處:
1. 能夠組織多個用例去執行(可以把多條測試用例封裝成一個測試套件,實現批量執行測試用例)
2. 提供了豐富的斷言方法,方便對用例執行的結果進行判斷
3. 能夠生成HTML格式的測試報告
4. 使用Fixture功能可以減少代碼的冗余
UnitTest核心要素:
TestCase:通過繼承TestCase類,我們可以創建一個test,或者一組tests
TestFixtures:setup + test_case + teardown結構
TestSuite:測試套件:多條測試用例集合在一起,就是一個TestSuite使用
TestRunner:TextTestRunner是用來執行測試用例和測試套件的
2、TestCase
如何定義測試用例
1.導包:import unittest
2.定義測試類:新建測試類必須繼承unittest.TestCase
3.定義測試方法:測試方法名稱命名必須以test開頭
如何執行測試用例
方式一:使用pycharm在代碼上點擊鼠標右鍵,選擇使用UnitTest運行
方式二:調用unittest.main()來運行
3、TextFixture
Fixture是一個概述,對一個測試用例環境的初始化和銷毀就是一個Fixture。
方法級別使用:
1.初始化 ( 前置處理 ):def setUp(self) --> 首先自動執行
2. 銷毀 ( 后置處理 ):def tearDown(self) --> 最后自動執行
3. 運行於測試方法的始末,即:運行一次測試 方法就會運行一次 setUp 和 tearDown
類級別使用:
1.初始化 ( 前置處理 ):@classmethoddef setUpClass(cls): --> 首先自動執行
2. 銷毀 ( 后置處理 ):@classmethoddef tearDownClass(cls): --> 最后自動執行
3. 運行於測試類的始末,即:每個測試類只會 運行一次 setUpClass 和 tearDownClass
4、TestSuite和TestRunner
TestSuite的使用
實例化:suite=unittest.TestSuite() (suite:為TestSuite實例化的名稱)
添加用例:suite.addTest(ClassName(“MethodName”))(ClassName:為類名;MethodName:為方法名)
添加擴展:suite.addTest(unittest.makeSuite(ClassName))(搜索指定ClassName內test開頭的方法並添加到測試套件中)
提示:TestSuite需要配合TestRunner才能被執行
TextTestRunner的使用
1.實例化:runner=unittest.TextTestRunner()
2.執行:runner.run(suite)#suite:為測試套件名稱
5、斷言
什么是斷言?
概念:讓程序代替人為判斷測試程序執行結果是否符合預期結果的過程。UnitTest 中提供了非常豐富的斷言方法,但是常用的也就那么幾個,並且使用起來也比較簡單
6、參數化
UnitTest 參數化
通過參數的方式來傳遞數據,從而實現數據和腳本分離,也可以把測試數據定義到數據文件或者數據庫中。
針對同一個測試方法,可以實現用例的重復執行,減少代碼冗余,提高測試效率。
unittest測試框架,本身不支持參數化,但是可以通過安裝 unittest 擴展插件parameterized 來實現。
parameterized 使用方式
導包:from par ameterized import par ameterized
使用@parameterized.expand 裝飾器可以為測試函數的參數進行參數化
7、跳過用例
在執行測試用例時,有時候有些用例是不需要執行的,那我們怎么辦呢?
難道刪除這些用例?那下次執行時如果又需要執行這些用例時,又把它補回來?這樣操作就太麻煩了。
unittest提供了一些跳過指定用例的方法
@unittest.skip(reason):強制跳轉。reason是跳轉原因
@unittest.skipIf(condition, reason):condition為True的時候跳轉
@unittest.skipUnless(condition, reason):condition為False的時候跳轉
@unittest.expectedFailure
8、生成HTML報告
測試腳本執行完后,可以生成以 HTML( 網頁 ) 格式的測試報告
為什么要生成測試報告?
(1)測試報告是本次測試結果的體現形態
(2)測試報告內包含了有關本次測試用例的詳情
使用HTMLTestRunner 生成測試報告
使用方法:
1.復制 HTMLTestRunner.py 文件到項目文件夾
2. 導入 HTMLTestRunner 、 unittest 包
3. 生成測試套件suite = unittest.TestSuite()
suite.addTest(TestAdd("test_01"))
4. 設置報告生成路徑和文件名 file_name = "./report/report.html“
5. 打開報告 with open(file_name,'wb') a s f:
6 . 實例化 HTMLTestRunner 對象: runner = HTMLTestRunner(stream=f,[title],[description])
參數說明:
stream :文件流,打開寫入報告的名稱及 寫入編碼格式 )
title : [ 可選參數 ] ,為報告標題
description : [ 可選參數 ] ,為報告描 述信息
7. 執行: runner.run(suite)
注:執行測試報告的文件應該寫在run.py文件里,不能寫在test_*文件里,否則無法生成報告。