先簡單了解下unittest框架的組成部分及運行原理
TestCase:表示測試用例
TestSuite:表示測試集合,多個測試用例集合到這里
TestLoader:集合完的用例等待被測試
runner:表示運行這些等待測試的用例
result:表示返回測試結果
示例1:寫個測試代碼,稍后會用單元測試來實現下
創建一個數學類,里面寫了加法和減法的方法
接下來我們創建一個py文件,用來做單元測試
一、導入模塊和框架
二、創建測試類,用來寫用例,需要注意的幾點
1、可以在setUp里面初始化數據,在方法中可以直接引用
2、方法必須要使用test開頭,后面緊跟方法名,如圖
3、類名也需要加Test
4、光標在哪個方法旁就只執行哪個方法
我們看下結果
三、創建加載器(紅3)及執行用例
附:收集測試用例的四種方法
結果如下:
結果可以看出執行兩條用例,結果以夾心餅干式出現
生成測試報告,test.txt為測試報告的文件名
verbosity=2,只有1和2的值,2展示的信息更全面一點,如果代碼出錯,也有錯誤信息
示例2:使用requests寫個測試類,記得先導入requests庫
寫個測試用例,記得from導入模塊哦
運行看下結果啦
生成測試報告
單元測試進行到這里就算完了,但是這樣的測試報告明顯不是我們需要的,太簡陋,太不好看了,那怎么才能生成一份高大上的測試報告呢?我們繼續往下面進行
這里需要注意的是文件類型為HTML,寫入的方式是wb+,以流的方式寫入,運行下看下結果哈,copy path到瀏覽器看下結果
看下詳情
漂亮的測試報告生成啦,那單元測試進行到這里是不是就結束了呢?
當然!不是!
我們怎么知道結果是正確的呢?
當然要增加斷言Assert啦~
在testcase里加入斷言,箭頭指向,以code碼為對比,如果code碼一致則通過,反之,不通過
看下測試報告
失敗的用例的詳情
加入except異常處理呢
看下結果啦
一切看起來很完美對不,但是這樣也有弊端,因為測試報告每次都覆蓋了,如果想看以前的報告會發現根本看不了,那怎么來解決這個問題呢?
我們可以根據報告生成的時間,每次運行都創建一個報告,這樣問題就可以解決啦
看下最終結果啦啦啦
稍微總結下:
1、需要用到的模塊有這三個,分別用來做不同的事情,當然你也可以再次拆分,只要import就好
2、整個單元測試期間除了需要導入各個模塊(.py)外,還需要import time(生成時間戳),import HTMLTestRunnerNew(漂亮的報告模板)并且需要在lib路徑下導入HTMLTestRunnerNew.py文件,如果用到了request則需要improt requests
3、注意將用例集合起來的4中方法,根據不 同的情況使用
4、最重要的一點是使用學會使用斷言,斷 言加在哪里,加在測試用例里面。self.assertEqual()來調用
當然也可以使用try except將異常拋出,注意? ? raise e(拋出異常)