JMeter----正則表達式&JSON Path Extractor

最近在用JMerter給公司一個項目作性能測試,期間遇到要提取上一個接口返回的數據做爲下個接口的請求。這裏作下記錄正則表達式

如圖所示,須要將「掃描二維碼」接口請求的返回值中的data部分,做爲「處理提交碼值」接口的參數傳遞給服務器。json

首先我想到的是利用正則表達式,直接把整個data部分提取出來,數組

嗯,沒錯,是否是以爲一步就搞定了,還說個毛線。服務器

可是.............性能

坑爹的是,服務端在接收data數據的時候,要對data數據作處理學習

首先,data以數組的形式傳參(有可能一次提交多個碼),測試

其次,data數組裏邊嵌套字典的形式,可是我傳給服務端須要把""轉義。。。(這裏真的想吐血,請教下各位大佬,這種狀況服務端不能作處理嗎)插件

結果,要傳遞的值大概就是下面呈現的形式:(懵逼....)blog

因此,以前把整個data部分取出來的想法pass了。。。索引

好吧,我另闢蹊徑,想着把每一個參數單獨取出來,下個接口在body裏邊先把"作成\",先轉義,再把值引用進來(像是摳圖同樣的趕腳...)

說完就幹,前面幾個參數取值都OK,沒什麼難度,取boxList的時候有點犯難,這個參數先後通常都是","符號,沒有明顯的標誌。

查了度娘,找了一種方法來取值:

把整個boxList所有取值(共6個),再用匹配數字去取第幾個值。

這裏有個小插曲,開始覺得能夠用【模板】裏邊的$1$這種去匹配表達式裏邊的6個取值,後面接口再用boxList_一、boxList_2........boxList_6來引用。後面發現不行...

【模板】$1$$2$表明的是,正則表達式中有多個提取式(多個括號裏邊的東東),第一個取值和第二個取值怎麼組合形式

好比:正則表達式提取出來兩個值,一個是lixiaoming,一個是24,若是【模板】寫成$1$$2$,那麼後面應用的時候,這個參數展示就是「lixiaoming24」(中間能夠加其餘鏈接符,有時候取多個值,再以某種形式組合成一個參數,這種可能會用到)

好,值取出來了。而後添加了6個正則提取器(請教大佬,這種後置處理器添加太多,對性能測試自己會有多大影響呢)

大體的形式就是這樣的:(....我也很無奈...)

後面接口,用boxList1....boxList6引用,OK,沒問題。

後面經理給我說有一個叫JSON Path Extractor的插件,用來提取服務器返回的json中的數據很好用。(what?!竟然以前沒有使用過這等插件)

立刻相會度娘,找了幾篇測友發的經驗之談,哇靠,果然簡單粗暴....

立刻招來玩玩,啊呸,立刻學些學習~

下載了插件,而後學着寫提取表達式

data裏邊的數據能夠看作是字典裏邊嵌套數組的形式,操做字典引用key,數組的話用索引去取值

因而表達式爲:$.data.boxList[0]

另外,網上也找了另外一種,data是數組裏邊嵌套字典的,學習學習

提取id的表達式爲:$.data[0].id

OK,新方法果真比正則表達式好用(自我以爲),並且也比較好理解

 

另外,在添加了正則表達式,JSON Path Extractor等提取器,想查看錶達式寫的是否正確,提取的內容是否正確。"查看結果樹"能夠作到

在結果樹中選擇「RegExp Tester」,輸入你寫的正則表達式,就能知道正則是否寫正確了。

同理,JSON Path Extractor同樣

 

 OK,寫完了。此次仍是有很多收穫,後面再對JMeter系統學習學習。

若是文中有些錯誤點,但願各位大佬及時指出,定虛心接受~

相關文章
相關標籤/搜索