Jmeter(7)Jmeter關聯案例(正則表達式提取器+Json提取器)


Jmeter 關聯案例(正則表達式提取器+Json提取器)

本次案例使用到正則表達式提取器,利用招生系統http://192.168.239.130:8080/recruit.students/login/view,實現新建學校和立馬禁用學校的關聯,也就是新建學校和禁用學校這兩個步驟處在同一個線程內完成。

image-20200826092154459

學習參考鏈接:https://www.cnblogs.com/wwho/p/7277349.html

image-20200826092559744

為什么創建學校和禁用學校要進行關聯?

下面我們先分析一下禁用學校這個步驟:

image-20200826093015273

idschoolId都是動態變化,那它們是跟着哪里變化的,根據哪里變化的,這些動態變化的數字是哪里產生的?

答案是新建學校一步為每一個新建的學校創建了不同的idschoolId

接下來通過分析創建學校一步:

image-20200826135859088

學校這里設置沒有什么問題,學校名被參數化了,所以每次運行基本都能成功新建新的學校。

運行測試計划,查看結果觀察樹,發現新建學校一步的響應內容包含了禁用學校一步需要的請求信息:

image-20200827115908910

所以我們可以給新建學校一步添加正則表達式后置提取器,從響應內容response data提取禁用一步需要的數據,最后進行參數化,達到關聯和動態變化的效果。

image-20200827124559369

image-20200827120400540

正則表達式提取器使用方法:

Apply to:和要檢查的相應字段,一般都默認,主要是針對響應數據中的值去處理,如有其它需要,可以參考jmeter說明

  • 引用名稱:自己定義的變量名稱,后續請求將要引用到的變量名,如填寫的是:actionId,后面的引用方式是${actionId}
  • 正則表達式:提取內容的正則表達式,相當於lr中的關聯函數
  • "()" 括起來的部分就是需要提取的,對於你要提的內容需要用小括號括起來】
  • 【".":匹配除了換行符以外的任何字符
  • "*"(貪婪) 重復零次或更多

​ 例如"aaaaaaaa" 匹配字符串中所有的a 正則: "a*" 會出到所有的字符"a"】

  • "+"(懶惰) 重復一次或更多次

​ 例如"aaaaaaaa" 匹配字符串中所有的a 正則: "a+" 會取到字符中所有的a字符, "a+"與"a"不同在於"+"至少是一次而"" 可以是0次】

  • 【"?"(占有) 重復零次或一次

    例如"aaaaaaaa" 匹配字符串中的a 正則 : "a?" 只會匹配一次,也就是結果只是單個字符a】

  • "*?" 重復任意次,但盡可能少重復

    例如 "acbacb" 正則 "a.*?b" 只會取到第一個"acb" 原本可以全部取到但加了限定符后,只會匹配盡可能少的字符 ,而"acbacb"最少字符的結果就是"acb" 】

  • "+?" 重復1次或更多次,但盡可能少重復,與"*?" 一樣,只是至少要重復1次】

還有分組的情況,常用的就這兩種,其它的可以再自行百度

  • "(?=exp)" 匹配exp前面的位置】
  • "(?<=exp)" 匹配exp后面的位置】
  • 模板:用$$引用起來,如果在正則表達式中有多個正則表達式(多個括號括起來的),則可以是$2$,$3$等等,表示解析到的第幾個值給actionId。例如:$1$表示匹配到的第一個值
  • 匹配數字:0代表隨機取值,-1代表所有值,此時提取結果是一個數組,其余正整數代表第幾個匹配的內容提取出來。如果匹配數字選擇的是-1,還可以通過${actionId}的方式來取第1個匹配的內容,${actionId}來取第2個匹配的內容。
  • 缺省值:正則匹配失敗時,取的值

本次案例的兩個正則表達式設置為:

"data":{"id":(.*?),"schoolName

登錄帳號為(.*?),密碼為

設置好正則表達式提取器后,將禁用一步的idschoolId進行參數化:

image-20200827130422063

然后,運行,刷新瀏覽器,最終的目標效果如下(新建學校后,立馬禁用了學校):

image-20200827130627321

本案例的jmx文件下載鏈接:https://github.com/jimmy688/jmeter_jmx_files

補充:其實禁用要用到的idschoolId不一定非要從新建學校一步的響應body里面提取,也可以從其它地方提取,如學校的列表頁。而且,因為新建學校的響應內容是json格式的,我們還可以使用json提取器來替換正則表達式提取器,兩者能達到的效果是一樣的。

image-20200827134819634

保證自己寫的json 表達式能提取出我們想要的數據的方式:

1、查看觀察樹,查看新建學校一步,選擇json格式:

image-20200827135016671

2、進行Test試驗:

image-20200827135144947

如果響應內容是json格式的,我們就可以使用后置json提取器來提取,否則就用正則表達式的就行,也還有其它類型的提取器可以用。

不同類型的提取器用法都差不多,只不過是這個表達式的提取語法不太一樣而已。


免責聲明!

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



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