在學(xué)會(huì)使用unittest后,實(shí)際上UI自動(dòng)化的基礎(chǔ)骨架已經(jīng)搭建起來了,剩下的就是利于這套框架,增添一些我們需要的功能,目前看來,我們已經(jīng)可以使用此框架來批量運(yùn)行用例,欠缺的是整體的思路以及一些其他功能細(xì)節(jié),比如日志記錄、封裝webdriver、讀取數(shù)據(jù)庫等功能的實(shí)現(xiàn)。
一、框架結(jié)構(gòu)
其中:
common:
一些基礎(chǔ)的底層方法類,例如:測(cè)試報(bào)告類、數(shù)據(jù)配置讀取類、日志類、封裝webdriver類、數(shù)據(jù)庫連接類、發(fā)送郵件類、公共方法類,只要是我們想要實(shí)現(xiàn)的一些功能,可以把基礎(chǔ)方法的實(shí)現(xiàn)放在common文件夾。
config:
配置文件放在這里,比如:賬號(hào)密碼、數(shù)據(jù)庫鏈接地址等。
log:
運(yùn)行用例后,日志的存儲(chǔ)文件夾。
report:
運(yùn)行用例后,測(cè)試報(bào)告的存儲(chǔ)文件夾。
page:
在POM設(shè)計(jì)模式下,關(guān)于具體UI頁面操作的方法。
test_case:
具體存放編寫的測(cè)試用例。
run_all:
用來批量運(yùn)行測(cè)試用例。
二、一些設(shè)計(jì)的想法和理念
2.1數(shù)據(jù)分離
數(shù)據(jù)分離,顧名思義是指要把代碼中的數(shù)據(jù)和代碼分離開來,這樣方便管理和維護(hù)。
在寫用例以及框架時(shí),會(huì)涉及到數(shù)據(jù)的處理,比如說:賬號(hào)、密碼、元素定位、測(cè)試數(shù)據(jù)等等,對(duì)于經(jīng)常會(huì)用到,但是不會(huì)經(jīng)常修改的數(shù)據(jù),比如賬號(hào)、密碼等,可以寫到配置文件里,然后再讀取;而對(duì)于元素定位的話,我習(xí)慣統(tǒng)一放到類里,作為類的全局變量來進(jìn)行維護(hù)調(diào)用,而不是寫到代碼邏輯中,之前嘗試過把元素定位放到excel中,但是元素定位需要經(jīng)常修改維護(hù),其實(shí)放在excel里修改很不方便,所以我更習(xí)慣作為一個(gè)類變量來存儲(chǔ)調(diào)用。
2.2 POM設(shè)計(jì)模式
POM簡單來說,我的理解就是高內(nèi)聚低耦合的一種實(shí)踐,通過分層來使得代碼更容易維護(hù)表達(dá),同時(shí)把復(fù)用性極多的方法整合到一起統(tǒng)一調(diào)用。運(yùn)用到UI自動(dòng)化中,則是把一個(gè)UI測(cè)試用例的實(shí)現(xiàn),分為了三層來實(shí)現(xiàn);第一層是driver層,我們把常用的方法封裝起來,比如查找元素的方法find_element()我們封裝成一個(gè)定位元素的方法,然后在這個(gè)方法里加入元素等待;第二層是page層,也就是頁面層,主要把一個(gè)頁面中的操作寫成一個(gè)方法,比如點(diǎn)擊確定按鈕,填寫用戶名等;第三層是case層,也就是測(cè)試用例層,通過把page中的操作像搭積木一樣組合起來,實(shí)現(xiàn)測(cè)試流程。
封裝的driver方法 ---》 page:頁面中的操作 ---》 case調(diào)用page中的操作
2.3測(cè)試框架的完整性
就是加上一些我們需要的功能,比如測(cè)試報(bào)告、日志的打印記錄、發(fā)送郵件等功能,當(dāng)然不僅限于此,在基本搭建好框架后,可以對(duì)框架本身進(jìn)行易用性的整改,比如我要查詢數(shù)據(jù)庫獲取數(shù)據(jù)來入?yún)⒒蛘邤嘌?,那就加入?shù)據(jù)庫連接的方法;比如為了項(xiàng)目更簡單易用,可以加入U(xiǎn)I頁面的可視化功能,python本身三方庫的種類很多,可以根據(jù)自己的需要或者想法來改造我們的框架。
-
Web
+關(guān)注
關(guān)注
2文章
1254瀏覽量
69202 -
自動(dòng)化
+關(guān)注
關(guān)注
28文章
5431瀏覽量
78893 -
ui
+關(guān)注
關(guān)注
0文章
202瀏覽量
21315
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論