自動化測試-設(shè)計模式-介紹
參考:http://www.rzrgm.cn/poloyy/p/12633726.html
1 關(guān)鍵字驅(qū)動
簡單而言,就是將Selenium常用功能進(jìn)行二次封裝
譬如:把查找元素、點(diǎn)擊、輸入等原生方法進(jìn)行封裝
特點(diǎn):可以讓不懂代碼的測試人員也能做自動化測試,徹底地實(shí)現(xiàn)測試步驟、測試數(shù)據(jù)和程序的分離
關(guān)鍵字驅(qū)動VS FR
可以把關(guān)鍵字驅(qū)動對比用RF(Robot Framework)做的自動化測試,在RF GUI界面調(diào)用關(guān)鍵字,并傳入?yún)?shù)即可完成一系列的元素操作;
而我們在Pycharm上完成關(guān)鍵字驅(qū)動也是相同道理,封裝好Selenium常用方法,然后去調(diào)用關(guān)鍵字,不同頁面?zhèn)魅氩煌膮?shù)即可完成一系列的元素操作
2 數(shù)據(jù)驅(qū)動
固定的程序,固定的測試步驟,使用不同的數(shù)據(jù)進(jìn)行測試【需要多組數(shù)據(jù)來測試】
將代碼和數(shù)據(jù)進(jìn)行分離,單純由數(shù)據(jù)組成文件,再由文件來驅(qū)動關(guān)鍵字,最終實(shí)現(xiàn)整個自動化的流程
3 關(guān)鍵字+數(shù)據(jù)驅(qū)動
讀取數(shù)據(jù),將固定格式的數(shù)據(jù)進(jìn)行拼接【讀取數(shù)據(jù)】
拼接后的內(nèi)容作為關(guān)鍵字所需要的參數(shù),進(jìn)行傳入【傳入數(shù)據(jù)】
調(diào)用關(guān)鍵字,將執(zhí)行結(jié)果和預(yù)期結(jié)果進(jìn)行對比,從而獲取單條測試用例執(zhí)行是否通過的結(jié)果【執(zhí)行關(guān)鍵字,斷言結(jié)果】
關(guān)鍵字驅(qū)動+數(shù)據(jù)驅(qū)動是一種設(shè)計模式哦!
4 PO模式
PO模式是page object model的縮寫,是一種設(shè)計模式
把待測頁面當(dāng)成一個頁面對象,一般包含了元素對象的定位和元素操作方法,將頁面對象和真實(shí)的網(wǎng)站頁面一 一映射起來
比如一個登錄頁面,使用PO模式后,操作的步驟如下:
會先創(chuàng)建一個class,該class就是登錄頁面對象類
類的屬性:用戶名輸入框,密碼輸入框,登錄按鈕的webElenent
類的方法:各種元素操作的方法
方法里面會調(diào)用對象庫層的二次封裝Selenium的方法
測試層從頁面操作層調(diào)用操作方法,寫成測試用例,這種模式可以做到定位元素與測試用例分離
所以這樣的設(shè)計理念就是PO模式
5 PO模式的分層
一般分三層
對象庫層:二次封裝Selenium的方法
頁面操作層(也稱:邏輯層):封裝頁面的元素對象和元素操作
測試層(也稱:業(yè)務(wù)層):多個頁面操作完成一個業(yè)務(wù)測試,一般結(jié)合單元測試框架(unittest、pytest)來測試
也有分四層的
對象庫層:二次封裝Selenium的方法
頁面層:封裝頁面的元素對象
操作層:封裝頁面的元素操作
測試層:多個頁面操作完成一個業(yè)務(wù)測試
PO與關(guān)鍵字驅(qū)動+數(shù)據(jù)驅(qū)動的區(qū)別
升級到PO模式之后,首先將Selenium常用的功能,結(jié)合實(shí)際業(yè)務(wù)需要進(jìn)行二次封裝;封裝的內(nèi)容是完全貼合實(shí)際業(yè)務(wù)來實(shí)現(xiàn)的【封裝Selenium】
將元素對象和元素操作進(jìn)行整合【元素對象整合】
將對象庫和測試代碼分離,實(shí)現(xiàn)數(shù)據(jù)與代碼分離【數(shù)據(jù)與代碼分離】
PO的優(yōu)勢
代碼冗余明顯降低:二次封裝Selenium方法和提取公共方法,提高代碼復(fù)用性
代碼的閱讀性明顯提升:因?yàn)槿龑臃旨墸瑢⒉煌瑑?nèi)容進(jìn)行不同的封裝,整體代碼閱讀性提升
代碼維護(hù)性明顯提升:UI測試中,頁面若經(jīng)常變動,代碼的維護(hù)量隨之增多;因?yàn)槿龑臃旨墸覀冎恍枰薷捻撁鎸ο蟮拇a,如元素對象或者操作對象的方法,不用修改測試用例的代碼,也不影響測試用例的正常執(zhí)行
降低代碼耦合性

浙公網(wǎng)安備 33010602011771號