自動化框架如何搭建?讓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://blog.csdn.net/pengjiangchun
原創不易,歡迎轉載,但未經作者同意請保留此段聲明,並在文章頁面明顯位置給出原文鏈接。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章