有個需求,須要在壓測環境中,建立幾十萬的帳號數據,而後再根據建立結果,查詢到某些帳號信息。html
按照以前個人作法,直接Python調用API,而後再數據庫查詢;正則表達式
可是近期全部開發人員的數據庫訪問權限被限制,我也不能例外。無法訪問數據庫,可是有沒有查詢的API,很差弄。數據庫
後來我想到了一個解決辦法,試驗了一下,可行。簡要記錄以下:json
拿到建立數據的 post API,用Jmeter實現如下,而後提取返回值,並保存到本地文件。api
順便說一下,其實這個用Python實現也沒問題,選擇哪一個,其實都行。app
我以前用Python弄得多一些,這裏把用Jmeter實現,也給作一下簡要的簡要記錄。以下:post
步驟以下:性能
一.新建TestPlanui
二.增長以下組件:spa
1.TestPlan
2.增長setUp Thread Group
3.增長 HTTP HTTP信息頭管理器
配置:Content-Type:application/json
4.增長HTTP Request
POST http://haochuangtest.com/api/rest/internal/v1/en/XXXenterprise/${具體參數}/cloudXXXXX
POST data:
{
"id": "",
"XXXXXNumber": "",
"displayName": "HAO-TEST",
"password": "",
"XXXXXPassword": "",
"autoXXX": 2,
"XXXModel": false,
"smartXXXX": 6,
"expireTime": -1,
"adminUserId": 0,
"adminDisplayName": "null",
"permanent": "true",
"XXXXXNumberType": 4,
"XXXXXId": "null",
"userXXXXXXXDisplayName": "null",
"configs": {
"conXXXX": "2"
}
}
5.增長 Regular Expression Extractor
<hashTree> <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true"> <stringProp name="RegexExtractor.useHeaders">false</stringProp> <stringProp name="RegexExtractor.refname">meetingNumber</stringProp> <stringProp name="RegexExtractor.regex">"meetingNumber":"(.+?)",</stringProp> <stringProp name="RegexExtractor.template">$1$</stringProp> <stringProp name="RegexExtractor.default"></stringProp> <stringProp name="RegexExtractor.match_number">1</stringProp> </RegexExtractor> <hashTree/>
6.增長 BeanShell PostProcessor
FileWriter fstream = new FileWriter("D:\\WORK_2020\\20200224_HAOCloud\\meetingId.txt",true); BufferedWriter out = new BufferedWriter(fstream); out.write(vars.get("meetingNumber")+ "\n"); out.close(); fstream.close();
7.增長 View Result Tree 察看結果樹
3.調試配置並運行;
運行過程,查看結果數的返回結果就行,此處不作截圖;
4.檢查結果:
可見文件已經成功生成 :
注意點:
1.對於返回結果的正則部分要注意,差一個雙引號或者.均可能出錯,致使獲取的結果爲null;
2.對於兩個引用的組件要注意,不要選錯;
3.其中主要的就是這個 BeanShell後置處理器 ,要注意使用;
部分參考:http://www.javashuo.com/article/p-xjwvbwdc-gh.html ,可是該文章有點問題錯誤,看的時候要注意辨別;
當作性能壓測時,可能會須要把響應數據的一些字段統計出來。這裏簡單介紹一下。
一、首先把接口調通,肯定須要統計的字段,這裏以統計ccmpSeq字段來作例子。
二、添加正則表達式提取器,用來提取響應結果中的ccmpSeq
正則表達式用""包起來,如HTTP請求完成後的響應數據
{
"ccmpSeq":"CBS_queryBalance20171023131825491588",
"respTime":"20180820105000",
"respCode":"0",
"respDesc":"操做成功",
"data":{
"totalAmount":19999991000,
"accountID":"acct1470001090166"
}
}
咱們只須要統計ccmpSeq,因此正則表達式爲 "ccmpSeq":"(.+?)"
() 表示括起來的部分就是要提取的。

四、添加線程數爲10,運行後,打開123.csv,查看結果。