【檸檬班】史上最簡單的Jmeter跨線程組取參數值的兩種辦法(不寫代碼)【原創】

若是你工做中已經在用jmeter作接口測試,或性能測試了,你可能會遇到一個麻煩,哪就是jmeter的變量值不能跨線程組傳遞。html

 

 

 

看,官方就已經給出瞭解釋。這個不是jmeter的缺陷,這是jmeter的設計使然的。若是變量在開始測試以前已經肯定了,咱們能夠用參數化關聯就能夠實現。可是若是值時動態生成,每循環一次,值就變化一次,那麼怎麼弄呢?java

此時,你可能就會去百度了,對嗎?你會發現,很奇怪,機會全部的百度結果都千遍一概的告訴你用Beanshell***,寫上一些不知所云的代碼。若是你不懂java,你看這着這開始寫代碼了,並且還寫着一些晦澀難懂的東西,你是否是已經開始頭痛了。正則表達式

若是是這樣,那你就繼續往下看,我來教你兩手。兩種方法,輕輕鬆鬆搞定,你都不用寫些哪啥都不懂的代碼。shell


方法一:定義屬性法

思路:jmeter中,屬性是全局的,是能夠動態設置的;而變量是獨屬於每一個線程的json

  • 第一步:咱們在jmeter中,添加兩個線程組
  • 第二步:在第一個線程組中,調用一個接口,提取你想要的值存儲到一個變量中
  • 第三步:在第一個線程組中,添加一個Beanshell後置處理器,而後再打開菜單欄中的 Tools -> 函數助手對話框(Function Helper Dialog),在彈窗中,選擇__BeanShell函數,表達式第一個值輸入將要存放的屬性名稱(英文),第二個值輸入你在第二步中定義的變量名稱,生成函數。複製函數、關閉彈窗,把函數粘貼到BeanShell後置處理器的Script窗口中。

 

 

 

  • 第四步:在第二個線程組中,添加一個‘用戶參數’,添加變量(Add variable),設置變量名稱,再次打開函數助手,選擇__P函數,在函數的第一個value值文本框中輸入${第三步設置屬性名稱},生成函數,複製函數,關閉彈窗,把它粘貼到添加的變量的值文本框中

 

 

 

  • 第五步:在第二個線程組中,接口參數使用定義的變量${變量名稱}

這樣,就實現了跨線程組之間傳遞參數。是否是,很簡單。It's so easy!app

注意:若是想要設置多個屬性,能夠在第三步的時候,粘貼多個函數,修改函數中屬性名稱和變量名稱,每一個函數之間用英文';'分開。函數


若是這你都以爲難了,不要灰心,繼續往下看,我再教你一個更容易理解的方法。 想要得到更多實用、好用的測試技能,歡迎關注檸檬班公衆號,騰訊課堂中搜索檸檬班性能

方法二:文件轉接法

思路:一個線程組運行結果,存儲到文件,另外一個線程組,經過csv讀取文件,而後再提取文件中須要的值,做爲變量輸入測試

  • 第一步:在jmeter中,添加兩個線程組
  • 第二步:在第一個線程組中,調用接口,而後添加監視器->保存響應到文件,設置保存文件的路徑和文件名前綴

 

 

 

  • 第三步:在第二個線程組中,添加一個csv數據文件設置(csv set data config),文件名設置爲第二步中,設置的保存文件路;變量名稱自行定義;分隔符設置爲'\t'(爲何這個地方要用\t,留個做業,請你們思考吧)

 

 

 

  • 第四步:添加正則表達式提取器(或json提取器),apply to 選擇'Jmeter variable Name to use',而後輸入csv讀取文件設置的變量名;再編寫正則提取式

 

 

 

  • 第五步:在第二個線程組中,添加接口,使用正則提取器中的變量名稱

至此,文件轉接法完成。ui

是否是兩種方法都至關簡單,都沒有去寫晦澀難懂的代碼!並且都實現了跨線程組傳參取值。


固然,這兩種方法都能實現跨線程組傳遞參數取值,不過,他們仍是有差別的。若是想了解更多關於他們兩種方法之間的差別,能夠關注檸檬班公衆號,或在騰訊課堂中搜索檸檬班機構,關注咱們,得到更多實用,好用的測試技能分享。

原文出處:https://www.cnblogs.com/allening/p/11650208.html

相關文章
相關標籤/搜索