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