框架:
1.PO模式應用(測試對象和測試用例分離)(寫到簡歷中)
2.引入ddt
3.深入分層:測試數據分離
4.遵循原則:測試用例的獨立性
5.深入分層:元素定位分離
6.框架優化:提取basepage,具備處理異常 日志 截圖功能
7.框架優化:使用pytest單元測試框架
8.Jenkins集成,分布式部署
為什么要把業務邏輯從測試邏輯里抽離出來?
-PO模式 PageObject 頁面中封裝成一個對象 ==》
例如:1,DOM document Object Model(將HTML文檔表示成js的對象) document.getElement...獲取內容
2,WebElement==>將html的標簽表示成python的object對象,web_ele.text web_ele.get_attribute()來訪問屬性
3,DOM-->python 的object對象,這就是PO模式的由來
--PageObject==》1.WebElement(元素) 2.元素操作(點擊,拖拽) 均屬於PageObject的組成部分,(就是一個頁面一個文件封裝)
- PO模式是一種自動化測試設計模式,將業務邏輯和測試邏輯分開,也就是把對象的定位和測試腳本分開,從而提高可維護性。(換個項目只要改寫業務邏輯不用改動測試邏輯)
- 使業務更清晰
- 代碼更利於維護
- 可以復用
首頁里面的邏輯封裝到一個頁面 --HomePage
--方法和邏輯封裝到登陸頁面 --LoginPage
投資BidPage,蜂群 UserPage
原理:
將頁面的元素定位和元素行為封裝成一個page類
類的屬性:元素的定位
類的行為:元素的操作
頁面對象和測試用例分離
測試用例:調用頁面所需對象的行為,組成測試用例
好處:
- 當某個頁面的元素發生變化,只需要修改該頁面對象中的代碼即可,測試用例不需要修改--可維護性
- 提高代碼重用率,結構清晰,維護代碼更容易
- 測試用例發生變化時,不需要或只需要修改少數頁面對象代碼即可--復用性
為什么不能用函數封裝?
# 多個不同的函數都公用一個形參,共享的實際參數可以作為一個屬性
# 在類中屬性表示共同特征
# 不利於在多個函數之間共享變量
#類就是這種共享數據的一種形式
---那么以上是可以封裝成一個類的, class LoginPage
PO模式
PO是Page Object的縮寫,PO模式是自動化測試項目開發實踐的最佳設計模式之一。
核心思想是通過對界面元素的封裝減少冗余代碼,同時在后期維護中,若元素定位發生變化, 只
需要調整頁面元素封裝的代碼,提高測試用例的可維護性、可讀性。
PO模式可以把一個頁面分為三層,對象庫層、操作層、業務層。
對象庫層:封裝定位元素的方法。
操作層:封裝對元素的操作。
業務層:將一個或多個操作組合起來完成一個業務功能。比如登錄:需要輸入帳號、密碼、點
擊登錄三個操作。
2.1 引入PO模式的好處
引入PO模式前
存在大量冗余代碼
11黑馬程序員-軟件測試
業務流程不清晰
后期維護成本大
引入PO模式后
減少冗余代碼
業務代碼和測試代碼被分開,降低耦合性
維護成本降低
ddt數據驅動:每個測試數據相互獨立(解決的問題)
用try except可以接受拋出的異常用例,繼續執行后續用例,否則一條用例失敗,后面的用例都無法執行