在學會使用unittest后,實際上UI自動化的基礎骨架已經(jīng)搭建起來了聚假,剩下的就是利于這套框架块蚌,增添一些我們需要的功能,目前看來魔策,我們已經(jīng)可以使用此框架來批量運行用例匈子,欠缺的是整體的思路以及一些其他功能細節(jié)河胎,比如日志記錄闯袒、封裝webdriver、讀取數(shù)據(jù)庫等功能的實現(xiàn)。
一政敢、框架結(jié)構(gòu)
其中:
common:
一些基礎的底層方法類其徙,例如:測試報告類、數(shù)據(jù)配置讀取類喷户、日志類唾那、封裝webdriver類、數(shù)據(jù)庫連接類褪尝、發(fā)送郵件類闹获、公共方法類,只要是我們想要實現(xiàn)的一些功能河哑,可以把基礎方法的實現(xiàn)放在common文件夾避诽。
config:
配置文件放在這里,比如:賬號密碼璃谨、數(shù)據(jù)庫連接地址等沙庐。
log:
運行用例后,日志的存儲文件夾佳吞。
report:
運行用例后拱雏,測試報告的存儲文件夾。
page:
在POM設計模式下底扳,關(guān)于具體UI頁面操作的方法铸抑。
test_case:
具體存放編寫的測試用例。
run_all:
用來批量運行測試用例花盐。
二羡滑、一些設計的想法和理念
2.1數(shù)據(jù)分離
數(shù)據(jù)分離,顧名思義是指要把代碼中的數(shù)據(jù)和代碼分離開來算芯,這樣方便管理和維護柒昏。
在寫用例以及框架時,會涉及到數(shù)據(jù)的處理熙揍,比如說:賬號职祷、密碼、元素定位届囚、測試數(shù)據(jù)等等有梆,對于經(jīng)常會用到,但是不會經(jīng)常修改的數(shù)據(jù)意系,比如賬號泥耀、密碼等,可以寫到配置文件里蛔添,然后再讀忍荡摺兜辞;而對于元素定位的話,我習慣統(tǒng)一放到類里夸溶,作為類的全局變量來進行維護調(diào)用逸吵,而不是寫到代碼邏輯中,之前嘗試過把元素定位放到excel中缝裁,但是元素定位需要經(jīng)常修改維護扫皱,其實放在excel里修改很不方便,所以我更習慣作為一個類變量來存儲調(diào)用捷绑。
2.2 POM設計模式
POM簡單來說韩脑,我的理解就是高內(nèi)聚低耦合的一種實踐,通過分層來使得代碼更容易維護表達粹污,同時把復用性極多的方法整合到一起統(tǒng)一調(diào)用扰才。運用到UI自動化中,則是把一個UI測試用例的實現(xiàn)厕怜,分為了三層來實現(xiàn)衩匣;第一層是driver層,我們把常用的方法封裝起來粥航,比如查找元素的方法find_element()我們封裝成一個定位元素的方法琅捏,然后在這個方法里加入元素等待;第二層是page層递雀,也就是頁面層柄延,主要把一個頁面中的操作寫成一個方法,比如點擊確定按鈕缀程,填寫用戶名等搜吧;第三層是case層,也就是測試用例層杨凑,通過把page中的操作像搭積木一樣組合起來滤奈,實現(xiàn)測試流程。
封裝的driver方法 ---> page:頁面中的操作 ---> case調(diào)用page中的操作
2.3測試框架的完整性
就是加上一些我們需要的功能撩满,比如測試報告蜒程、日志的打印記錄、發(fā)送郵件等功能伺帘,當然不僅限于此昭躺,在基本搭建好框架后,可以對框架本身進行易用性的整改伪嫁,比如我要查詢數(shù)據(jù)庫獲取數(shù)據(jù)來入?yún)⒒蛘邤嘌粤祆牛蔷图尤霐?shù)據(jù)庫連接的方法;比如為了項目更簡單易用张咳,可以加入UI頁面的可視化功能帝洪,python本身三方庫的種類很多针史,可以根據(jù)自己的需要或者想法來改造我們的框架。