如果有這樣的情況:一個完整的操作流程,需要先完成某個操作,獲得某個值或數據信息,然后才能進行下一步的操作(也就是常說的關聯(lián)/將上一個請求的響應結果作為下一個請求的參數)晨汹;
在jmeter中,可以利用正則表達式提取器來幫助我們完成這一動作贷盲。
新建線程組后淘这,新建http請求,然后巩剖,右鍵添加后置處理器→正則表達式提取器铝穷,正則表達式提取器界面如下:
說明:
后置處理器:在請求結束或者返回響應結果時發(fā)揮作用
正則表達式提取器:允許用戶從服務器的響應中通過使用perl的正則表達式提取值。該元素會作用在指定范圍取樣器佳魔,用正則表達式提取所需值曙聂,生成模板字符串,并將結果存儲到給定的變量名中鞠鲜。
APPly to:作用范圍(返回內容的斷言范圍)
? ? ? ? ?Main sample and sub-samples:作用于父節(jié)點的取樣器及對應子節(jié)點的取樣器
? ? ? ? ?Main sample only:僅作用于父節(jié)點的取樣器
? ? ? ? ?Sub-samples only:僅作用于子節(jié)點的取樣器
? ? ? ? ?JMeter Variable:作用于jmeter變量(輸入框內可輸入jmeter的變量名稱)
要檢查的響應字段:需要檢查的響應報文的范圍
? ? ? ? ?主體:響應報文的主體
? ? ? ? ?Body(unescaped):主體宁脊,響應的主體內容且替換了所有的html轉義符,注意html轉義符處理時不考慮上下文镊尺,因此可能有不正確的轉換朦佩,不太建議使用?
? ? ? ? ?Body?as?a?Document:從不同類型的文件中提取文本并思,注意這個選項比較影響性能?
? ? ? ? ?Response Headers:響應信息頭
? ? ? ? ?Request Headers:請求信息頭
? ? ? ? ?URL:統(tǒng)一資源定位符庐氮,即Internet上用來描述信息資源的字符串
? ? ? ? ?Response Code:響應狀態(tài)碼,比如200宋彼、404等
? ? ? ? ?Response Message:響應信息
PS:jmeter的中文翻譯有時候不太準確弄砍,建議盡量選擇語言格式為英文(為了方便說明仙畦,這里選擇中文語言,當然音婶,自己明白最好慨畸,不用糾結這個)
引用名稱(Reference?Name):Jmeter變量的名稱,存儲提取的結果衣式;即下個請求需要引用的值寸士、字段、變量名(例子中我提取的是SOCIAL_NO)
引用方法:引用方法:${引用名稱}
正則表達式(Regular?Expression):使用正則表達式解析響應結果碴卧,“()”表示提取字符串中的部分值弱卡,請不要使用“||”,除非你本身需要匹配這個字符住册。
下面是常用的正則表達式操作符:
模板(Template):從匹配的結果中創(chuàng)建一個字符串婶博,這是通過正則表達式匹配出來的一組值,意為使用提取到的第幾個值(可能有多個值匹配荧飞,因此使用模板)凡人;從1開始匹配,以此類推.
參數可以在取值模板組合使用叹阔,例如:“11-22”作為模板得到的值是使用“-”連接的第一個待匹配內容與第二個待匹配內容組合而成的字符串挠轴。
匹配數字(Match?No):正則表達式匹配數據的結果可以看做一個數組,表示如何取值:0代表隨機取值耳幢,正數n則表示取第n個值(比如1代表取第一個值)忠荞,負數則表示提取所有符合條件的值。
缺省值:匹配失敗時候的默認值帅掘;通常用于后續(xù)的邏輯判斷委煤,一般通常為特定含義的英文大寫組合,比如:ERROR
最后修档,根據上面的說明碧绞,完成配置,然后可以先添加一個監(jiān)視器(查看結果樹)吱窝,檢查是否取到了對應的值讥邻;
提取到的參數,調用時用${SOCIAL_NO_1}院峡,${SOCIAL_NO_2}...兴使,如果想要得到匹配出的參數的個數,用${SOCIAL_NO_matchNr}照激,如果想隨機選取一個发魄,只需要將
匹配數字設為0,使用${SOCIAL_NO}調用即可。