Jmeter+Ant+Python 介面自動化測試
ATI_Jmeter
介紹
本專案是一整套使用Jmeter+Ant+Python完成介面自動化測試的解決方案;特別是多系統的測試任務執行,要比網上的教程方便的多。
功能:
- 使用Jmeter維護介面測試用例;
- 使用Ant執行測試任務,並生成測試報告;
- 使用Python完成郵件傳送及任務排程;
- 通過get請求觸發任務執行,排程方式靈活;
- 具有定時功能,可週期性或者定時執行測試任務;
- 通過監控埠,當服務重啟後,可自動執行測試任務;
- 支援自動從git拉取最新版本;
實現:
- 使用Ant執行Jmeter指令碼,並生成測試報告;
- 考慮到郵件正文內容可讀性,定製化修改測試報告模板;
- 使用正規表示式提取測試報告中的資訊,重新組合成郵件正文;
- 通過get請求觸發測試任務的執行;
- 通過執行緒池+佇列的方式執行測試任務,可靈活設定執行緒池大小;
- 使用aiohttp框架啟動後臺服務,將測試報告加入到靜態資源中,可通過連結訪問;
- 每次執行測試任務前,自動從git拉取最新版本;
生成的測試報告:
部署
1、Jmeter和Ant部署參考網上教程,主要介紹測試報告模板修改和build.xml檔案
測試報告模板是在jmeter自帶模板的基礎上修改的,主要修改詳見
res
資料夾中的report
截圖,說明如下,其他小的修改這裡不贅述,可使用文件比較工具自行比較檢視,也可線上文件比較 ;(1) 截圖中標註的修改1和修改5,因為預設模板帶有2個png的靜態檔案,生成測試報告時必須帶上這2個靜態檔案,否則測試報告頁面不好看,因此,需要去掉這2個靜態檔案;
(2) 截圖中標註的修改2,測試報告一般重點關注測試失敗的用例,因此,需要把測試失敗的用例展示在前面;
(3) 截圖中標註的修改3,把標題改成中文,因為測試報告會發給較多的人;如果你在外企工作,可以改成英文,但是相對應的指令碼中的正規表示式也需要修改;
(4) 截圖中標註的修改4,新增了一個空的span
標籤,用於新增自定義的內容,提高傳送的測試報告郵件的可讀性;
(5) 其他未標註出來的修改點,主要是預設模板沒有我想看到的資料,把一些沒有展示的資料展示出來,把一些“沒用的”資料隱藏起來,以及一些樣式的修改;build.xml檔案如下,具體配置已詳細說明。強調:為了方便測試報告統一管理,也為了能夠自動傳送郵件,所有系統的build.xml中的測試報告路徑必須是同一個資料夾
2、克隆repository
git clone https://github.com/leeyoshinari/ATI_Jmeter.git
3、測試用例放置
(1)所有測試用例放在一個統一的資料夾中,例如
testCase
資料夾;
(2)針對不同系統的不同測試用例,可單獨再放入一個資料夾中管理,例如:百度的測試用例放在baidu
中、百度的BVT測試用例放在baidu_bvt
中、騰訊的測試用例放在tencent
中;
(3)每個系統的測試用例資料夾中,都需要放一個配置好的build.xml
檔案;注意:所有系統的測試報告路徑必須是同一個資料夾;
(4)測試用例資料夾具體結構如下:
強烈建議資料夾及檔名稱使用英文
為什麼要按照上面的要求放置測試用例?這樣放置方便執行測試任務,通過get請求http://ip:port/run/baidu
就可以執行百度的測試用例,請求http://ip:port/run/baidu_bvt
就可以執行百度BVT的測試用例。
4、修改配置檔案config.conf
(1)執行緒池大小,建議設定1就夠了;如確實排程較多測試用例的執行,可酌情增加;
(2)測試用例路徑和測試報告路徑,建議使用絕對路徑;其中測試報告路徑應和build.xml
檔案中的路徑保持一致;
(3)如介面自動化指令碼維護在git上,可配置git本地倉庫路徑,每次執行任務前,自動從git上拉取最新版本,預設拉取主分支;前提是已經clone到本地了;
(4)郵件傳送配置,請確認SMTP服務配置正確;郵箱登入密碼配置,請在sendEmail.py
檔案中第48行設定,如果密碼不想讓其他人看到,請將該py檔案進行編譯,或者直接將這個repository打包,具體打包方法,請往下看;
5、執行
Linux:
nohup python3 server.py &
Windows
python server.py
6、打包
經過前5步,如果該repository可以啟動,且執行測試任務成功,則可以進行打包,使用pyinstaller進行打包。
pyinstaller安裝自行查詢教程,須確保安裝正確,否則打包會報錯,下面直接進行打包:
(1)進入ATI_Jmeter資料夾,執行命令:
pyinstaller server.py -p schedule.py -p logger.py -p config.py -p sendEmail.py -p testing.py --hidden-import logger --hidden-import schedule --hidden-import config --hidden-import sendEmail --hidden-import testing
(2)打包完成後,在當前路徑下會生成dist資料夾,進入dist/server即可找到可執行檔案server;
(3)將配置檔案config.conf拷貝到dist/server資料夾下,並修改配置檔案;
(4)如需要部署在其他伺服器上,可將dist/server整個資料夾拷貝到其他伺服器,啟動server
nohup ./server &
7、CI/CD,以Jenkins為例,在Jenkins構建後操作中增加一個get請求,請求的url為http://IP:PORT/run/系統名稱
,此處系統名稱應和testCase用例資料夾中的對應的系統名稱保持一致。
8、如果你所在的專案還沒有用到CI/CD,或者專案本身有較多配置項,每次手動更改配置重啟專案後,也想自動執行測試任務;亦或是你不想配置CI/CD,則需要執行客戶端;
進入client資料夾,將指令碼和配置檔案拷貝到專案所在的伺服器上,執行即可,也可以按照步驟6的方式進行打包。
修改配置檔案config.conf:
(1)系統名稱必須和測試用例資料夾中的名稱保持一致,例如可配置成
baidu
;如需測試多個系統,名字用英文逗號,
隔開;
(2)系統埠號即系統佔用的埠號;如需監控多個系統的埠,埠用英文逗號,
隔開;
注意:如測試多個系統,系統名稱的排序和系統埠的排序必須保持一致
注意
1、如需部署client,部署的伺服器必須支援netstat
命令,以便根據埠號查程式號;僅支援Linux系統;
2、已經測試的版本:Jmeter-5.2.1、Ant-1.10.7
相關文章
- 介面自動化測試
- Python 介面自動化測試Python
- protobuf 介面自動化測試摸索
- 介面自動化測試框架 HttpFPT框架HTTP
- 二、介面自動化測試(2)
- 介面自動化測試 - RobotFramework RESTinstanceFrameworkREST
- JMeter 介面自動化測試(手工轉自動化指令碼)JMeter指令碼
- 使用 testng 做介面自動化測試
- 介面自動化測試解決方案
- Django 介面自動化測試平臺Django
- 介面自動化測試工程實踐分享
- 介面自動化測試框架搭建的思路框架
- postman實現介面的自動化測試Postman
- 如何用Postman做介面自動化測試Postman
- 介面自動化測試框架搭建總結框架
- 真的要進行介面測試自動化?
- 自動化測試系列 —— UI自動化測試UI
- 試著使用 jmeter 實現介面自動化測試JMeter
- python+pytest介面自動化(1)-介面測試基礎Python
- python介面自動化測試之介面資料依賴Python
- 測試開發之介面篇-使用K6完成介面自動化測試
- Postman+Newman+Git+Jenkins介面自動化測試PostmanGitJenkins
- Linux下搭建介面自動化測試平臺Linux
- 介面自動化使用requests生成測試報告測試報告
- Jmeter 介面自動化連載 (13) - 自動生成測試報告JMeter測試報告
- 介面自動化測試錄製工具,讓python selenium自動化測試指令碼開發更加方便Python指令碼
- 【自動化測試入門】自動化測試思維
- 求助帖:JMeter 介面自動化測試——資料驅動JMeter
- ? python 介面自動化 (二)--什麼是介面測試、為什麼要做介面測試 (詳解)Python
- 求大神指點思路-python 自動化介面測試Python
- 如何制定介面自動化測試的覆蓋率?
- 開源介面自動化測試專案--時默
- seldom 2.0 讓介面自動化測試更簡單
- 軟體測試(功能、介面、效能、自動化)詳解
- 介面自動化測試的最佳工程實踐(ApiTestEngine)API
- 『居善地』介面測試 — 7、介面自動化測試框架的設計與實現框架
- [python] request 介面測試自動化指令碼轉化為 [locust] 效能測試指令碼Python指令碼
- 基於LangChain手工測試用例轉介面自動化測試生成工具LangChain