JMeter-一個接口的返回值作為輸入傳給其他接口:設置全局變量和非全局變量


背景:

在用JMeter寫接口case,遇到一種情況,接口1查看列表接口,接口2查看詳情接口,接口2需要傳入接口1列表的第一條數據的id

如果這個id后續改變較多,可以使用非全局變量的設置方法

如果這個id在整個case都比較固定,那么可以使用全局變量設置方法

 

對於非全局變量的設置方法

解決方案:

首先放一下總體截圖

 

 

 具體步驟

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-查看結果樹

 

 

設置全局變量:

如果要將上面的ID設置成全局變量,那么

1- HTTP request的提取ID下面,新建一個BeanShellPostProcesser,如下圖 ${__setProperty(id,${id},)}

如果是取得cookie里的,那么使用${__setProperty(cookie_id,${id},)}

 

2-以上就設置了全局變量,變量名為Id,所謂全局,就可以新建一個Thread Group,傳參如下圖${__property(id)}

注意這里小括號里的變量名,適和提取id里的變量名一致的,否則會導致失敗

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM