背景:
在用JMeter寫介面case,遇到一種情況,介面1檢視列表介面,介面2檢視詳情介面,介面2需要傳入介面1列表的第一條資料的id
因為這個id後面我可能會改變,所以也不適合作為全域性變數來設定
解決方案:
首先放一下總體截圖
具體步驟
1-新建一個Thread Group即執行緒組,在該執行緒組下面新增介面1的HTTPrequest,填寫路徑方法和引數等(選擇執行緒組右鍵-add-HTTPrequest)
2-選擇介面1的HTTPrequest ,右鍵新建一個正規表示式提取器,即上圖中的“提取id”
3-在結果樹觀察列表介面的返回值,確認正規表示式 "content":\[\{"id":"(.+?)"能夠獲取到第一個id,關於正規表示式語法可參考菜鳥教程
4-將正規表示式和id補充到提取器的正規表示式內,注意要勾選驗證區域!否則會搜不到,我們這裡是檢視返回值,選擇了Body
引用名稱:下一個請求要引用的引數名稱,如填寫id,則可用${id}引用它
模板:用$*$引用起來,表示解析到的第幾個值,如:$1$表示解析到的第1個值
匹配數字:0代表隨機取值,1代表第一個,-1代表每一個
5-線上程組下,新建一個 Debug Sampler(新建路徑:右鍵新執行緒組 - 新增 - Sampler - Debug Sampler),方便檢視所提取的環境變數值是否正確
6-在當前執行緒組下新建一個介面2的HTTPrequest,寫清路徑方法等,傳參的id 寫${id}
注意!!兩個介面必須在一個執行緒組下面,否則會獲取不到提取值。
當然依賴介面1資料的介面2在順序上,也應該在下面,JMeter的介面執行時按序執行的
7-檢視結果樹