【自動化學習】自動化測試指令碼怎麼寫?自動化框架如何搭建?讓10年阿里自動化測試老司機幫你搞定!
一、何為框架?何為自動化測試框架?
無論是日常技術交流,還是在自動化測試實踐中,經常會聽到一個詞叫:框架。之前對“框架”這個詞知其然不知其所以然。現在看過一些資料以及加上我自己的一些實踐有了我自己的一些看法。
那麼:什麼是框架?
在自動化實踐過程中,框架就是一個半成品,框架是指對應用系統的部分設計或實現系統的部分結構。
舉個栗子:selenium是不是一個框架?Yes,它是一個框架,那麼這個框架能不能對一個指定的系統比如淘寶做自動化測試?答案是不能的,我們還必須使用這個框架封裝好的方法去實現淘寶的業務邏輯。所以說框架就是封裝好的一個半成品。
那麼:什麼是自動化測試框架?
自動化測試框架就是:為了對一個指定的系統做自動化測試而封裝的一個半成品,自動化測試攻城獅可以呼叫這個半成品封裝好的方法去實現一個指定系統的自動化測試!
還是不明白?沒關係,下面一張圖道破玄機!下面這個照片框架請問是不是一個半成品?不是一個完整的照片?但是它又是整個照片的一部分!
二、根據驅動模式不同自動化測試框架分為四種模式。
(1) 資料驅動框架
(2) 關鍵字驅動框架
(3) 資料驅動+關鍵字驅動混合型驅動框架
(4) 行為驅動(lettuce)測試框架
三、自動化測試框架如何實現(資料驅動框架)
1.自動化測試框架最核心的是分層模式和封裝:
分層模式:一般的情況下,自動化測試框架都會分三層:BasePage基礎頁封裝層,PO模型層,TestCase測試用例層。這三層的關係為:TestCase測試用例層呼叫PO模型層的元素定位和元素操作,PO模型層呼叫BasePage基礎頁封裝層。如下圖:
除了以上框架核心三層外還包括:日誌處理模組,ini配置檔案處理模組,資料驅動模組,jenkins持續整合模組等。
2.自動化測試框架程式碼結構,如下圖:
其中:
base資料夾為BagePage封裝層。此資料夾下有基礎方法封裝base.py和基礎單元測試封裝base_unit.py。
common為公共的方法封裝層。此資料夾下有配置檔案工具:config_util.py,Excel讀寫工具:excel_util.py,日誌處理:logger_util.py檔案。
data為excel資料檔案。都是資料檔案
log為生成的日誌檔案。
pageobject為PO模型層。
report為生成的測試報告資料夾
testcase為測試用例層。
all.py為總執行檔案。
import HTMLTestRunner import unittest from common.config_util import get_project_path, get_config if __name__ == '__main__': test_dir = get_project_path()+"testcase" dis=unittest.defaultTestLoader.discover(test_dir,pattern="*.py") #now = time.strftime("%Y-%m-%d-%H_%M_%S",time.localtime(time.time())) #filepath = get_project_path()+"/report/"+get_config("reportSet","reportFileName")+now+".html" filepath = get_project_path()+"/report/report.html" fp = open(filepath,"wb") runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title="攜程網自動化測試報告",description="報告詳情如下") runner.run(dis) fp.close()
config.ini為全域性配置檔案。
#瀏覽器選擇(不區分大小寫,谷歌:Chrome;火狐:Firefox;IE:Ie;) [Browser] browserName = Chrome #被測專案地址設定 [testUrl] url=https://trains.ctrip.com/TrainBooking/SearchTrain.aspx### #框架日誌設定 #(分別為日誌檔案字首,檔案日誌級別,檔案日誌格式,控制檯日誌級別,控制檯日誌格式)日誌級別共五級(不區分大小寫,預設為INFO):DEBUG,INFO,WARNING,ERROR,CRITICAL [logSet] LogFileName = log_ fileLogLevel = INFO fileLogFormatter = [%(asctime)s] %(filename)s->%(funcName)s line:%(lineno)d [%(levelname)s] %(message)s consoleLogLevel = INFO consoleLogFormatter = [%(asctime)s] %(filename)s->%(funcName)s line:%(lineno)d [%(levelname)s] %(message)s #框架報告設定(報告檔名稱設定) [reportSet] reportFileName = report_
四、當前自動化框架和市面上不同型別的對比。
1、當前框架使用的是三層框架:
第1層、base資料夾是基礎封裝層,
第2層、pageobject是頁面封裝層(包括元素定位和動作),
第3層、測試用例層。其中第2層繼承第1層的基礎層,第3層呼叫第2層的動作。
2、其他不同的框架型別
(1)將第2層中的元素定位寫入ini配置檔案中。然後讀取。
(2)分四層:把第2層分解成兩層,分別是元素定位層、動作層。
五、總結
每個公司,每個自動測試工程師封裝的自動化框架都不一樣,沒有一成不變的自動化測試框架,也沒有最好的自動化測試框架,只有最合適的自動化測試框架,最終總結出:
如果你對此文有任何疑問,如果你對軟體測試、介面測試、自動化測試、面試經驗交流感興趣歡迎加入:
軟體測試技術群:695458161,群裡發放的免費資料都是筆者十多年測試生涯的精華。還有同行大神一起交流技術哦。
轉載於:https://www.cnblogs.com/csmashang/p/12733189.html