Jmeter關聯
所謂關聯,從業務角度講,即:某些操作步驟與其相鄰步驟存在一定的依賴關系,導致某個步驟的輸入數據來源於上一步的返回數據,這時就需要“關聯”來建立步驟之間的聯系。
簡單來說,就是:將上一個請求的響應結果作為下一個請求的參數。。。
這里的提取器,都可以作為jmeter中關聯的使用。
一、邊界提取器
參數:前三個就不做介紹了;
(4)匹配數字:-1表示全部,0隨機,1第一個,2第二個
(5)缺省值:這個如果沒有匹配到,給它定義的一個默認值
這里和lr里的關聯函數是差不多的,比如這里要提取hao123,

提取器填寫如下:

在請求2里引用:引用使用${變量名},這里為${id},如下圖,就已經取到值了。

二、正則表達式提取器
參數:
(1)就是變量名。
(2)正則表達式:
():括起來的部分就是要提取的。
.:匹配任何字符串。
(3)模板:用$$引用起來,如果在正則表達式中有多個正則表達式,則可以是$2$$3$等等,表示解析到的第幾個值給title。如:$1$表示解析到的第1個值
(4)匹配數字:0代表隨機取值,1代表全部取值,通常情況下填0
(5)缺省值:如果參數沒有取得到值,那默認給一個值讓它取。

在請求2里引用:引用使用${變量名},這里為${id},如下圖,就已經取到值了。

三、json提取器
jsonpath得使用詳細:http://www.lemfix.com/topics/63
json提取器的示例:https://www.cnblogs.com/tudou-22/p/12579575.html
參數介紹:
(1)names of created variables :接收值的變量名
(2)json path: json path表達式
(3)match no:0隨機;n取第幾個匹配值;-1匹配所有,后續引用用 變量名_N 取第N個值。
(4)default values: 缺省值,匹配不到值的時候取該值
如果返回的數據時json串,那么該如何提取呢?
這里說一下json提取器:
json數據為:{"statusCode":200,"data":{"userId":"4a2cbe616eb74f0d99190af072c8dea6","token":"37e7a9e198186f5a443e50e6138a5bd20bd"}}
則json path表達式為:$.data.token
json數據為:{"statusCode":200,"data":[{"code":"407949","id":"aa477ad2085d492a99b877d14343d68d","name":"90一中4545"}]}
則json path表達式為:$.data[0].id 【原來這個responses 的data為數組,故應為 $.data[0].id 提取第1個值】
例子:提取下面json里的性別

json提取器里填寫如下:

在請求2里引用:引用使用${變量名},這里為${name},如下圖,就已經取到值了。

四、xpath提取器
XPath Extractor是另一個可被用來提取頁面給定內容的Post Processor,XPath Extractor的使用方式與Regular Expression Extractor類似,只不過需要在該Extractor中指定的不是正則表達式,而是給定的XPath路徑。
用xpath從前一個請求中取。這種形式比較適合於返回為xml片段的情況。在需要獲得數據的請求上右擊添加一個后置處理器-->xPath Extractor。引用名稱即下一個請求要引用的參數名稱,如填寫body,則可用${body}引用它。
Xpath一般用於返回xml用得多。
這里需要學習xpath的寫法
參數:
(1)Reference Name:存放提取出的值的參數。
(2)XPath Query:用於提取值的XPath表達式。
(3)Default Value:參數的默認值。
面板介紹:

【小注】正則表達式提取器和XPath Extractor的區別:
①正則表達式提取器可以用於對頁面任何文本的提取,提取的內容是根據正則表達式在頁面內容中進行文本匹配;
②XPath Extractor則可以提取返回頁面任意元素的任意屬性;
③如果需要提取的文本是頁面上某元素的屬性值,建議使用XPath Extractor;
④如果需要提取的文本在頁面上的位置不固定,或者不是元素的屬性,建議使用正則表達式提取器。
