一個基於python+selenium的page-object自動化測試框架
先上框架git連結:
https://gitee.com/yukarijiang/watcher#0-qzone-1-79223-d020d2d2a4e8d1a374a433f596ad1440
這個框架目前才剛剛起步,還有很多不完善和不適當的地方,但可以用於學習selenium以及小型的專案的自動化測試,同時也期望與對自動化測試感興趣的朋友深入交流。先上框架結構:
config/ //配置資料夾
|——config.ini //配置檔案
data/ //存放資料的檔案
|——demo.xml //xml資料
driver/ //存放引擎檔案
log/ //存放日誌檔案
|——2018-05-05/ //日誌按天儲存
|————170031.txt //每次執行的日誌檔案
report/ //測試報告輸出檔案
|——excel/ //excel測試報告
|————2018-05-05/ //測試報告按天儲存
|——————203211.xls //每次執行的測試報告
|——html/ //html測試報告
|——image/ //截圖
|————2018-05-05_203211/ //截圖按照每次測試儲存
src/ //核心程式碼目錄
|——api/ //介面測試目錄(暫未開發)
|——gui/ //UI測試目錄
|————action/ //行為
|————page/ //頁面
|————story/ //使用者故事
uit/ //工具目錄
index.py //入口檔案
整個框架是按照使用者故事進行組織的,主要用於自動驗證按照使用者故事操作是否正確,不用於發現各型別錯誤。之所以如此設計,在於首先要檢測出錯誤需要編寫大量的測試程式碼進行判斷,其次維護成本也相當高,而筆者使用自動化測試的目的在於持續整合的過程中,保證主流程不出問題,即主要使用者故事能走得通。
整個專案通過index.py單入口執行,即在專案目錄下:python index.py即可執行。index.py中包括了每次測試的配置,比如日誌、截圖、報告的輸出位置等。
uit/檔案下為基礎工具模組。包括:config.py(讀取配置檔案)、log.py(輸出日誌)、report.py(輸出測試報告)等。
page/ 基於page-object的思想,將每個頁面封裝成一個類,頁面的操作為類方法,本框架中page類中不處理資料,只進行dom的選擇與操作。
action/ 檔案下的action類為行為類、行為類用於給page類的方法填充資料,組合page類的操作成一個行為,例如示例中通過baidu進入csdn這個行為,包括了在baidu頁面輸入csdn,點選搜尋的第一條連結進入csdn。
story/ 資料夾下即為使用者故事類,每個使用者故事由多個action串聯而成。
基於以上的結構,page類為基礎類,直接面向頁面dom,action類只能呼叫page類的方法對dom進行操作,story類只能呼叫action類的方法,將一系列行為組織成一個完整的使用者故事,其中story類中還包括了資料的還原,比如新增一個使用者,測試完畢則刪除這個使用者。index.py裡可配置多個story,對多個使用者故事進行批量測試。
以上架構基於筆者對自動化測試不成熟的想法,若有不適當的地方,還請批評指正。