Jmeter之接口依賴


一、應用場景

1、現在有兩個接口,一個是登錄,一個查詢,但查詢接口必須要依賴登錄接口的token,那么通過正則表達式提取器提取登錄接口的響應結果

2、現在有兩個接口,A接口返回列表數據,另一個查詢接口的參數是A接口返回的列表的數據

那么為了解決以上兩個問題,我們先了解下正則表達式

二、必備的正則表達式:

書寫方式為:元字符+限定符

元字符 意義 限定符 意義
. 任意單個字符 + 匹配至少大於1次
\d 任意單個數字 ? 匹配0次或1次
[0-9] 等價0-9 * 匹配0次或多次,貪婪匹配
[a-zA-Z] 等價所有的大小寫字母 {n,} {n,m} {n} 匹配限定次數

三、正則表達式提取器的使用

即在某個請求的響應結果中拿到某個值或某些值

1、操作:在HTTP請求上右擊->添加->后置處理器->正則表達式提取器(該提取器是隸屬於某個請求下的)

 2、正則表達式的書寫

需求: 想要獲取【軟件測試工程師】這個內容

接口返回的部分內容如下:

 首先找到左右邊界,寫好正則表達式,根據邊界可以唯一確定取到的值。

步驟:(1)先在響應結果中確定要提取內容的左右邊界,那么【軟件測試工程師】的左邊界是"JobName": ",右邊界是",

(2)再將要提取的內容用英文圓括號括起來,即"JobName": "(軟件測試工程師)",,注意:一定要根據邊界可以唯一確定取到的值。

(3)最后將()內用正則表達式表示出來,即"JobName": "(.{7})"

注意:想從【"JobName": "軟件測試工程師","JobName": "開發",】提取到【"JobName": "軟件測試工程師",】,如果正則表達式為【"JobName": "(.*)",】

那么提取到的內容是【"JobName": "軟件測試工程師","JobName": "開發",】而不是【"JobName": "軟件測試工程師",】

3、正則表達式提取器中其他內容

1表示根據正則表達式提取到的結果賦值變量名

2中寫的正則表達式可以有多個,如下,而()起到了分組作用

3中$1$表示提取(.{7})的值,$2$表示提取(.*)的值,注意$中間的數字必須從1開始,否則得到的結果為null

4中0表示當根據正則表達式可以匹配到多個內容時,每次會隨機取出一個符合條件的值,那如果想拿到符合正則表達式的所有值時,就把4處的地方填-1即可

 

4、正則表達式提取器結果的查看

線程組->右鍵添加->取樣器->Debug Sample(調試取樣器)

啟動線程,調試取樣器的結果如圖:job指根據正則表達式獲取到的內容,注意模板中兩個值用-連接,所以job = job_g1-job_g2

job_g1和job_g2分別是$1$和$2$的值

四、在依賴的HTTP請求中利用正則表達式提取到的值

job、job_g1、job_g2是提取到請求1結果值的內容,將作為請求2的參數值,參數格式依然是${變量名},那么應用場景1的接口依賴就解決了

五、foreach循環控制器的使用

正則表達式提取器中匹配數字填-1,匹配到的結果值有多個,如圖,在調試取樣器中總共有13個值,那么如何將這些值作為請求2的參數呢

 可以通過添加ForEach控制器:線程組->添加->邏輯控制器->ForEach控制器

注意:要將依賴接口放在For Each邏輯控制器下面

 

在調試取樣器中的變量名都是menu_X(X是從1開始的整數),而menu正是在正則表達提取器中設置的引用名稱;

1中輸入變量前綴和正則表達提取器中設置的引用名稱要保持一致

2循環字段表示通過調試取樣器拿到的變量,暫且稱為列表吧,那么這里就填寫你想引用列表的范圍

3表示你給從列表中取到的每個值賦個變量名,哈哈,是不是很眼熟呢。。。不就是python中學的for循環呢?

即for id in menu:

 好了,那如何在接口2中引用這些變量呢?很簡單,依舊在接口2中參數中變量以${變量名}的方式,如圖:

六、整個測試計划如圖:

七、Json Path提取器

適用場景接口返回是json格式的數據

在HTTP請求上右擊添加->后置處理器->JSON提取器

 比如想要拿到接口1中的canDemo值作為第二個接口的參數,那么可以先在JSON PATH Expression中輸入對應的表達式,$表示根節點,點號表示下一級

 那么在json提取器中設置變量名,json提取表達式

 那么在接口2中如何使用提取到的變量呢?依舊是${變量名}

最后得到的測試計划如圖:

八、HTTP Cookie管理器

https://www.cnblogs.com/liulinghua90/p/9257552.html

https://www.cnblogs.com/liulinghua90/p/9257548.html


免責聲明!

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



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