web自動化測試第21步:UI自動化框架結構以及思路

在學會使用unittest後,實際上UI自動化的基礎骨架已經搭建起來了,剩下的就是利於這套框架,增添一些我們需要的功能,目前看來,我們已經可以使用此框架來批量運行用例,欠缺的是整體的思路以及一些其他功能細節,比如日誌記錄、封裝webdriver、讀取數據庫等功能的實現;在網上看了很多別人的框架,以及加上自己的理解後,我在這裏分享一下我最終所整理的這套框架。

一、框架結構

UI自動化框架結構

這裏是我的一個框架結構,其中:

common:

一些基礎的底層方法類,例如:測試報告類、數據配置讀取類、日誌類、封裝webdriver類、數據庫連接類、發送郵件類、公共方法類,只要是我們想要實現的一些功能,可以吧基礎方法的實現放在common文件夾。

config:

配置文件放在這裏,比如:賬號密碼、數據庫連接地址等。

log:

運行用例後,日誌的存儲文件夾。

report:

運行用例後,測試報告的存儲文件夾。

page:

在POM設計模式下,關於具體UI頁面操作的方法。

test_case:

具體存放編寫的測試用例。

run_all:

用來批量運行測試用例。

 

二、一些設計的想法和理念

2.1數據分離

數據分離,顧名思義是指要把代碼中的數據和代碼分離開來,這樣方便管理和維護。

在寫用例以及框架時,會涉及到數據的處理,比如說:賬號、密碼、元素定位、測試數據等等,對於經常會用到,但是不會經常修改的數據,比如賬號、密碼等,可以寫到配置文件裏,然後再讀取;而對於元素定位的話,我習慣統一放到類裏,作爲類的全局變量來進行維護調用,而不是寫到代碼邏輯中,之前嘗試過把元素定位放到excel中,但是元素定位需要經常修改維護,其實放在excel裏修改很不方便,所以我更習慣作爲一個類變量來存儲調用。

2.2 POM設計模式

POM簡單來說,我的理解就是高內聚低耦合的一種實踐,通過分層來使得代碼更容易維護表達,同時把複用性極多的方法整合到一起統一調用。運用到UI自動化中,則是把一個UI測試用例的實現,分爲了三層來實現;第一層是driver層,我們把常用的方法封裝起來,比如查找元素的方法find_element()我們封裝成一個定位元素的方法,然後在這個方法里加入元素等待;第二層是page層,也就是頁面層,主要把一個頁面中的操作寫成一個方法,比如點擊確定按鈕,填寫用戶名等;第三層是case層,也就是測試用例層,通過把page中的操作像搭積木一樣組合起來,實現測試流程。

封裝的driver方法     --->    page:頁面中的操作     --->    case調用page中的操作

2.3測試框架的完整性

就是加上一些我們需要的功能,比如測試報告、日誌的打印記錄、發送郵件等功能,當然不僅限於此,在基本搭建好框架後,可以對框架本身進行易用性的整改,比如我要查詢數據庫獲取數據來入參或者斷言,那就加入數據庫連接的方法;比如爲了項目更簡單易用,可以加入UI頁面的可視化功能,python本身三方庫的種類很多,可以根據自己的需要或者想法來改造我們的框架。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章