Jmeter關聯詳解


關聯的概念

  從上一步操作中獲取需要的值,傳遞給下一步操作中進行引用,形成自動關聯,而不是

每次操作都去手動修改關聯的值。常見的場景有SessionID、Session Token值的獲取。

正則表達式提取器

正則基礎

  正則表達式(Regular Expression):使用正則表達式解析響應結果,“()”表示提取字

符串中的部分值,請不要使用“||”,除非你本身需要匹配這個字符。

常用的正則表達式操作符:

操作符

說明

實例

.

匹配除“\r\n”之外的任何單個字符。

 

[]

字符集,對單個字符給出范圍

[abc] 表示非a、b、c,[a-z]表示a-z的單個字符

[^ ]

非字符集,對單個字符給出排除范圍

[^abc] 表示非a或b或c的單個字符

*

前一個字符零次或無限次擴展

abc* 表示ab、abc、abcc、abccc等

+

前一個字符1次或無限次擴展

abc+ 表示abc、abcc、abccc等

前一個字符0次或1次擴展

abc? 表示ab、abc

|

左右表達式的任意一個

abc|def 表示abc、def

{m}

擴展前一個字符m次

ab{2}c 表示abbc

{m,n}

擴展前一個字符m到n次 

 ab{1,2}c 表示abc、abbc

^

 匹配字符串開頭

^abc 表示abc且在一個字符串的開頭 

$

 匹配字符串結尾

abc$ 表示abc且在一個字符串的結尾 

()

分組標記內部只能使用|操作符 

(abc) 表示abc,(abc|def)表示abc、def

\d

數字,等價於0-9

 

\w

單詞字符,等價於[a-z0-9A-Z_]

 

常用組合:

.*具有貪婪的性質,匹配到不能匹配為止,最大匹配原則。

+或*后跟?表示非貪婪匹配,即盡可能少的匹配,最小匹配原則。

.*? 表示在能匹配成功的前提下盡可能少的匹配,最小匹配原則。

 

Name:組件的名字,可以自定義

Comments:注釋

Apply to:一般保持默認選擇Main sample only即可

Field to check:要檢查的響應字段,比較常用的是Body

Name of created variable:引用名稱,即變量名,將獲取到的值存儲在這個變量中

Regular Expression:正則表達式,根據要抓取的內容編寫

Template:模板,$1$表示第一個正則表達式,如果有2個模板,則填入$1$$2$

Match No.(0 for Random):匹配數字(0代表隨機),一般填1,表示第一個,0表示隨機,-1表示全部

(此時提取結果是一個數組,如果引用名稱是user,也可以通過${user_1}的方式來取第1個匹配的內容)

Default Value:缺省值,沒匹配到就使用該值,如填入一個Test

實際運用

  工作場景:有兩個接口,分別可以獲取到城市代碼和城市天氣,查詢城市天氣的接口需要將

獲取到的城市代碼作為參數傳入。

查詢城市代碼接口:http://toy1.weather.com.cn/search?cityname=shanghai

查詢城市天氣接口:http://www.weather.com.cn/data/cityinfo/101020100.html

  接下來,我們需要使用正則表達式提取器來實現兩個接口的關聯,先抓取到城市代碼存儲到

一個變量中,然后在查詢城市天氣接口中引用該變量。

  在Jmeter中建立http請求,配置好查詢城市代碼接口,添加查看結果樹。

  添加正則表達式提取器,抓取需要的參數。

  添加查詢城市天氣接口,城市代碼引用上一步提取的參數,查看響應結果。

 JSON Path Extractor提取器

基礎簡介

  對於需要從接口返回為JSON的結果中提取內容,然后作為變量在不同的請求中傳遞,JSON Path Extractor

提取器可以說是非常好用。對於JSONPath不太熟悉的同學,建議在使用該組件前先去官網學習一下相關內容。

JSONPath官網:https://goessner.net/articles/JsonPath/

先看一下JSONPath語法與其對應的XPath概述和比較。

XPath JSON路徑 描述
/ $ 根對象/元素
. @ 當前對象/元素
/ 或者 [] 子運算符
.. 不適用 父運算符
// .. 遞歸下降。JSONPath 從 E4X 借用了此語法。
* * 通配符。所有對象/元素,無論其名稱。
@ 不適用 屬性訪問。JSON 結構沒有屬性。
[] [] 下標運算符。XPath 使用它來迭代元素集合和謂詞在 Javascript 和 JSON 中,它是本機數組運算符。
| [,] XPath 中的聯合運算符導致節點集的組合。JSONPath 允許將備用名稱或數組索引作為一個集合。
不適用 [開始:結束:步驟] 從 ES4 借來的數組切片運算符。
[] ?() 應用過濾器(腳本)表達式。
不適用 () 腳本表達式,使用底層腳本引擎。
() 不適用 在 Xpath 中分組

  在jmeter里使用此組件,需要安裝對應的JMeterPlugins-ExtrasLibs插件。下載完成,將

jar包放入jmeter安裝目錄lib\ext中,然后重啟jmeter。

鏈接: https://pan.baidu.com/s/1vh9IL9tgwDsSYl2dShgbsw

提取碼: 7kgh

Destination Variable Name:要存儲的變量名稱

JSONPath Expression:JSON表達式

Default Value:缺省值,未取到結果使用該值

實際運用

1.當返回值為JSON時,JSON表達式為 $.userSession.sessionId 

{
    "userSession": {
        "businessCode": "900000",
        "createTime": "2018-05-25 03:24:17",
        "userCode": "29feaa3c98014e02bec16c6f448a6459",
        "userName": "lip-vpn",
        "sessionId": "10a4cee035d044d8b2f25e2cebb2843e"
    }
}

在jmeter中添加JSON Path Extractor,然后用結果樹查看輸出,配置如下:

2.當返回值為數組時,需要加上數組的位置,JSON表達式為 $.userSession[0].sessionId 

{
    "userSession": [
        {
            "businessCode": "900000",
            "createTime": "2018-05-25 03:24:17",
            "userCode": "29feaa3c98014e02bec16c6f448a6459",
            "userName": "lip-vpn",
            "sessionId": "10a4cee035d044d8b2f25e2cebb2843e"
        }
    ]
}

在jmeter中添加JSON Path Extractor,然后用結果樹查看輸出,配置如下:

 


免責聲明!

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



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