基於PO和單例設計模式用python+selenium進行ui自動化框架設計【多測師_王sir】


本人是一名軟件測試技術愛好者,希望和大家一起交流ui,接口,性能,功能,人工智能,大數據等技術。更多免費軟件測試ui和接口自動化框架設計視頻就在多測師官網:www.duoceshi.cn  ==》多測師_王sir原創

 

一)框架目錄的結構

 

二)config包當中的config.ini文件主要是用來存項目的絕對路徑,是為了后續跑用例和生成測試報告做准備
然后目前的配置文件大都會用yaml,ini,excel,還有.py也就是python文件來進行管理這里用的是ini文件。

 

三)config包當中的globalconfig文件主要是用來生成項目的路徑,測試用例,測試報告的路徑
其中調用了ReadConfigIni這個類來讀取ini格式的文件。

 

四)Data.xlsx主要是用來存放項目的url,賬號和密碼的
通過excel來存放,可以增加數據的穩定性,后面會通過封裝讀取excel文檔的工具類,來對excel文檔中的數據進行讀取

 

五)public包中pages包中的BaseTestCase模塊主要是用來放基類的
當中並且通過set_driver傳入一個driver對象來進行設置driver對象,這其實就是單例設計模式的體現然后通過get_driver來拿driver,
所以只要繼承BaseTestCase這個基類,就可以拿到這個類當中的一切類方法。然后定位頁面元素
用find_element這個類方法來進行封裝,可以使得傳入的參數是一個
元組,然后這里其實用到了Java當中的page object設計模式,也就是所謂的PO設計模式,使得頁面
中的每一個控件都變成了對象的屬性。

 

 

 

六)public包中pages包中的login模塊主要封裝了項目的登錄,首先創建一個driver
對象,然后通過調用set_driver方法把driver傳給基類,這個地方是最為關鍵的
地方,所以基類中的driver,其實就是這個地方傳進去的,然后把driver對象賦值
變成了BaseTestCase這個基類的類變量也就是類的屬性,所以后續基類當中的類方法
其實都是使用的這個login模塊中創建的這個driver對象,這樣的目的就是可以保證我們
的項目從頭到尾都是使用的同一個driver對象,同一個driver指的就是打開的為同一個
chrome瀏覽器。

 

 

七)這里封裝了一個讀取excel的工具類
因為后續我們的項目的賬號和密碼都存在excel文檔中去了,所以需要封裝一個
讀取excel的工具類,來讀取賬號和密碼,其中用到了xlrd模塊來讀取。

 

八)Login_data模塊中主要是讀取excel然后返回url,賬號,密碼
get_password方法因為生成的數據是浮點數,所以用了int函數進行轉換。

 

九)封裝了一個發送郵件的工具類,值得注意的是這里用的是163的smtp服務器
這個代碼是不適用QQ服務器的,而且pwd是163郵箱的授權碼,不是密碼
這個地方需要注意。

 

 

十)PageElement這個模塊很為關鍵,這個PageElement類當中封裝了所有頁面的網頁元素
這里其實就是用到了讓一個項目中的所有元素定位和用例流程和最終的用例進行分層處理
這個設計有點像RF框架當中的三層封裝設計模式:元素層,流程層和案例層,但是這樣處理
有一個問題就是代碼量會很多。但是優勢也是非常明顯的
優勢如下:
1.讓元素定位,流程,案例進行了分離
2.前端代碼關於元素定位有改動可以隨時進行處理,修改非常方便
3.讓代碼間的耦合性降低
4.降低代碼的維護成本
5.代碼的復用性高
6.采用標准的page object頁面對象設計模式,符合現在主流ui自動化框架的標准搭配

 

十一)這里封裝了一個工具類,主要是用來讀取ini文件的
需要先在dos窗口用pip install configparser來安裝configparser模塊

 

十二)run模塊中主要是用來加載和運行所有的用例,並且生成測試報告和發送測試報告。

 

十三)編寫測試用例,后續有當前模塊的測試用例就可以更新在當前這個模塊中
然后進行斷言。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM