1. 程式人生 > 其它 >UI自動化單元測試框架

UI自動化單元測試框架

一、測試範圍:

表單的錯誤提示資訊驗證

產品的業務邏輯

頁面的各種互動(選項、懸浮)

二、金字塔模型:

在Python中,單元測試框架主要是unittest。單元測試是最基本也是最底層的測試型別,單元測試應用於最基本的軟體程式碼,如類,函式。方法等,單元測試通過可執行的斷言檢查被測單元的輸出是否滿足預期結果。在測試金字塔的理論上來說,越往下的測試投入資源越高,得到的回報率越大,⻅測試金字塔模型:

 

 

 

unittest屬於標準庫,只要安裝了Python直譯器後就可以直接匯入使用了import unittest

三、步驟:

初始化 (開啟瀏覽器)

測試 步驟

斷言 (字串中 is in ==)

清理 (關閉瀏覽器)

 

四、單元測試框架包括:

測試用例(TestCase)

測試韌體:初始化setUp(),清理tearDown()

測試套件(TestSuite):組織測試用例。在一個測試套件裡面可以包含很多的測試用例,可以把它理解為一個容器。測試用例的集合。

測試執行(TestRunner):測試執行指的是針對測試套件或者是測試用例進行執行的過程

測試報告(TestReport):所有的測試測試用例執行完成後輸出的彙總結果報告資訊

 

在測試類裡面編寫的測試方法必須是test開頭的!!!!

每個自動化測試用例必須得有斷言 斷言本質上其實就是兩個物件的比較,在字串中,兩個物件的比較主要是通過:is,in,==的方式裡進行的。

 

 

五、斷言:

assert為原生斷言方法

unittest中的斷言方法:

① assertEqual比較兩個物件是否相等(類似於字串的==)

測試類中有多少個測試方法,初始化和清理就執行幾次

 

 ② assertIN比較一個物件是否包含另外一個物件,in:

③assertTrue驗證是否勾選為真:

④ assertFlase驗證是否勾選為假:

 

 

六、測試韌體:

在unittest單元測試框架中,測試韌體用於處理初始化的操作,例如對百度的搜尋進行操作之前,首先需要開啟瀏覽器並且進入到百度首頁;測試結束後,需要關閉瀏覽器。測試韌體提供了兩種執行形式,一種是每執行一個測試用例,測試韌體都會被執行一次;另外一種是不管有多少個測試用例,測試韌體只執行一次。

1、測試韌體每次均執行

setUp和tearDown

2、測試韌體只執行一次

類測試韌體:setUpClass和setDownClass,指的是不管一個測試類裡面有多少個測試用例(方法),測試韌體只執行一次。需要在方法上面加裝飾器@classmethod.

優點:節約了時間。

缺點:執行完一個測試用例後,需要回歸到頁面的初始化。

(建議使用測試韌體setUp和tearDown每次都會開啟和關閉瀏覽器,使得自動化測試用例之間沒有關聯性,避免一個測試用例執行失敗是由上一個測試用例導致。)

 

 

 

六、編寫測試用例注意事項

1、在一個測試類裡面,每一個測試方法都是以test開頭的,test不能是中間或者尾部,必須是開頭,建議test_

2、每一個測試用例方法都應該有註釋資訊,這樣在測試報告就會顯示具體的測試點的檢查點

3、在自動化測試中,每個測試用例都必須得有斷言,無斷言的自動化測試用例是無效的

4、最好一個測試用例方法對應一個業務測試點,不要多個業務檢查點寫一個測試用例

5、如果涉及到業務邏輯的處理,最好把業務邏輯的處理方法放在斷言前面,這樣做的目的是不要因為業務邏輯執 行錯誤導致斷言也是失敗

6、測試用例名稱最好規範,有約束

7、是否先寫自動化測試的測試程式碼,在使用自動化測試方式寫,本人覺得沒必要,畢竟能夠做自動化測試的都具 備了功能測試的基本水平,所以沒必要把一個業務的檢查點寫多次,浪費時間和人力成本。

 

七、自動化測試流程:

1、先梳理哪些模組可以做自動化測試

2、梳理完成後,和相關的人(領導)建議核對下計劃以及梳理的結果

3、編寫程式碼實現梳理的測試模組

4、編寫完成後,和相關的人進行評審程式碼(測試場景是否考慮周全,測試斷言是否合理,程式碼編寫的是否合理)

5、編寫完成後,整合到Jekins的持續整合平臺

6、下個迭代的時候,直接可以應用於產品的迴歸測試中

 

八、測試用例執行順序詳解

在unittest中,測試點的執行順序是依據ascii碼來執行的,也就是說根據ASCII碼的順序載入,數字與字母的順序為:0-9,A-Z,a-z,所以以A開頭的測試用例方法會優先執行,以a開頭後執行。也就是根據數字的大小從小到大執行的,切記數字的大小值的是不包含test,指的是test後面的測試點的數字大小。

在自動化測試用例中,編寫的測試用例不需要刻意的進行排序,讓測試框架內部框架按照它的排序規則去執行。切記:編寫的每一個自動化測試用例都必須是獨立的,和其他的測試用例之間沒有任何的依賴性。

技巧:在某個測試用例的標題上右鍵執行,意思為只執行這個測試用例。在類上右鍵,執行整個類。

 

九、測試套件詳解

UnitTest的測試框架中提供了很豐富的測試套件,所謂測試套件其實我們可以把它理解為測試用例的集合,或者可以說理解為一個容器,在這個容器裡面可以存放很多的測試用例。

TestLoader類中

①按測試類執行

按測試類執行,可以理解為在測試套件中,我們按測試類的方式來進行執行,那麼也就不需要在乎一個測試類裡面有多少測試用例,我們是以測試類為單位來進行執行,測試類裡面有多少的測試用例,我們都會進行執行

②按模組執行

 

 

③載入所有的測試模組(重點)

(discover方法必須掌握 面試必問!!!!(兩個引數的意思))

用到的方法是TestLoader()類下的discover方法。

兩個引數:

star_dir:測試模組的路徑;

pattern:載入所有的測試模組(通過*正則的方式)。

所以我們命名測試模組的時候注意格式:test_xxx.py

 

 

④TextTestRunner:

執行測試套件的方法。

類TextTestRunner下的run方法

 

 

 

 

十、引數化:

cmd中安裝pip3 install parameterized

 

 列表迴圈進行賦值的過程

 

 

十一、測試報告

unittest生成測試報告需要使用到第三方的庫HTMLTestRunner,把該庫放在Python安裝目錄下的lib目錄下。

 

建report包:放測試報告