當前位置:成語大全網 - 新華字典 - 自動化測試-unittest框架,理論和實操雙管齊下

自動化測試-unittest框架,理論和實操雙管齊下

unittest

1、什麽是Unittest框架?

python自帶壹種單元測試框架

2、為什麽使用UnitTest框架?

>批量執行用例

>提供豐富的斷言知識

>可以生成報告

3、核心要素:

1). TestCase(測試用例)

2). TestSuite(測試套件)

3). TestRunner(測試執行,執行TestUite測試套件的)

4). TestLoader(批量執行測試用例-搜索指定文件夾內指定字母開頭的模塊) 推薦

5). Fixture(固定裝置(兩個固定的函數,壹個初始化時使用,壹個結束時使用))

接下來會展開 核心要素來認識unittest框架:

首先介紹下unittest的用例規則:

1、測試文件必須導包:import unittest

2、測試類必須繼承 unittest.TestCase

3、測試方法必須以 test_開頭

壹、TestCase(測試用例)

1、是壹個代碼文件,在代碼文件中來書寫真正的用例代碼 (裏面的print均是模擬測試用例)

說明:def 定義的test_ 是測試用例,只有執行 if __name__ == '___mian___' 的時候會執行測試用例,其他普通函數則不執行,通過 self 來調用執行。

二、TestSuite(測試套件)和TestRunner(測試執行)

1、TestSuite(測試套件):用來組裝,打包 ,管理多個TestCase(測試用例)文件的

2、TestRunner(測試執行):用來執行 TestSuite(測試套件的)

代碼:首先要準備多個測試用例的文件才可以實現TestSuite和TestRunner,以下代碼是已經準備了unittest_Demo2和unittest_Demo1兩個測試用例文件

三、TestLoader(測試加載)

說明:

2. 搜索指定目錄文件下指定字母開頭的模塊文件下test開始的方法,並將這些方法添加到測試套件中,最後返回測試套件

3. 與Testsuite功能壹樣,對他功能的補充,用來組裝測試用例

壹般測試用例是寫在Case這個文件夾裏面,當測試用例超多的時候就可以考慮 TestLoader

四、Fixture(測試夾具)

是壹種代碼結構,在某些特定情況下,會自動執行。

4.1 方法級別

在每個測試方法(用例代碼)執行前後都會自動調用的結構

def setUp(),每個測試方法執行之前都會執行 (初始化)

def tearDown(),每個測試方法執行之後都會執行 (釋放)

特性:幾個測試函數,執行幾次。每個測試函數執行之前都會執行 setUp,執行之後都會執行tearDwon

4.2 類級別

在每個測試類中所有方法執行前後 都會自動調用的結構(在整個類中 執行之前執行之後各壹次)

def setUpClass() ,類中所有方法之前

def tearDownClass(),類中所有方法之後

特性:測試類運行之前運行壹次setUpClass ,類運行之後運行壹次tearDownClass

註意:類方法必須使用 @classmethod修飾

案列模板:結合了類級別和方法級別實現的

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-GBxQV2uP-1647245316010)(C:/Users/15277/AppData/Roaming/Typora/typora-user-images/image-20220303153824329.png)]

五、斷言

1、什麽是斷言:

讓程序代替人工自動的判斷預期結果和實際結果是否相符

斷言的結果:

1)、True,用例通過

2)、False,代碼拋出異常,用例不通過

3)、在unittest中使用斷言,需要通過 self.斷言方法

2、為什麽要斷言:

自動化腳本執行時都是無人值守,需要通過斷言來判斷自動化腳本的執行是否通過

註:自動化腳本不寫斷言,相當於沒有執行測試壹個效果。

3、常用的斷言:

對於壹些未完成的或者不滿足測試條件的測試函數和測試類, 不想執行,可以使用跳過

結果

七、數據驅動(unittest ddt)

ddt:data-driver tests

數據驅動:是以數據來驅動整個測試用例的執行, 也就是測試數據決定測試結果

數據驅動解決的問題是:

1)、代碼和數據分離,避免代碼冗余

2)、不寫重復的代碼邏輯;

在python解釋器中需要安裝 ddt 這個包才能用:

要檢查是否安裝上,在cmd當中 輸入 pip list命名,有ddt說明安裝成功

語法:

1、使用數據驅動,要在class前加上修飾器 @ddt

說明:方法裏面使用 print ,為了方便,模擬測試用例,主要是為了學習數據驅動,實際中方法裏面寫的是測試用例的代碼

1)、結合 selenium 使用 ddt

self:相當於java中的this,當前對象的引用,self.driver定義了driver這個變量。

2、在實際中不可能是單壹參數進行傳參,將會使用多個參數進行傳參:

但是以上步驟都是數據在代碼當中的,假如要測試n個手機號這樣的數據,全部寫在 @data 裝飾器裏面就很麻煩,這就引出了數據驅動裏面的代碼和數據的分離。

3、將數據放入壹個文本文件中,從文件讀取數據, 如JSON、 excel、 xml、 txt等格式文件 ,這裏演示的是json文件類型.

json文件處理, 這個鏈接介紹了json文件和Python文件基本操作

(1)、在json文件驅動

(2)、在測試代碼中讀取json文件

執行結果:

壹行表示壹組:

寫法壹:

寫法二:推薦

對應的json文件

寫法:

註意:file_date 裝飾器,可以直接讀取yaml和json文件

建立excel表的時候需要退出pychram在根目錄下創建excel表保存,否則會報錯

用excel登錄csdn操作

用例不可能每壹次運行都成功,肯定運行時候有不成功的時候。如果可以捕捉到錯誤,並且把錯誤截圖保存,這將

是壹個非常棒的功能,也會給我們錯誤定位帶來方便

截圖方法: driver.get_screenshot_as_file

有兩種測試報告:

只有單獨運行 TestCase 的代碼,才會生成測試報告

這裏需要第三方的測試運行類模塊,然後放在代碼的目錄中

就像這兩個模塊壹樣放進代碼目錄中

寫法壹:

寫法二:

這裏面的當前路徑也可以用 ./ 來表示!!!

註意:

實例化 第三方的運行對象,HTMLTestRunner()的初始化有多種可以自定義設置

最後生成結果

unittest框架就本上就是這些知識了,裏面記得東西很多,多敲代碼,形成記憶...