Jmeter系列(45)- 詳解 Jmeter 跨線程組取參數值的方法,免代碼!

若是你想從頭學習Jmeter,能夠看看這個系列的文章哦html

https://www.cnblogs.com/poloyy/category/1746599.htmljson

 

前言

  • 用過 Jmeter 的同窗應該都知道,Jmeter 不支持跨線程傳遞參數
  • 哎,那我想跨線程傳遞參數,要咋整呢?別急,接下來咱們就來說解如何不使用代碼就能夠解決此問題
  • 官方也有正式說明,因此這並非 Bug 哦

 

必定要經過 BeanShell 去跨線程組傳遞參數嗎?

  • 經過百度搜索:Jmeter 跨線程組傳遞參數
  • 會看到不少文章都是經過 BeanShell 寫代碼去實現的
  • 這對於代碼小白極其不友好!
  • 因此這篇文章將教會你們如何不須要寫代碼去實現跨線程傳遞參數!

 

定義屬性法

思路

  • 在Jmeter 中,屬性是全局生效的,能夠動態設置
  • 但變量是每一個線程獨有的
  • 因此經過設置屬性能夠實現跨線程傳參,而不是經過變量的方式

 

測試計劃結構樹

第一步數據結構

  1. 添加了三個線程組
  2. 登陸須要註冊接口返回的手機號
  3. 獲取訂單列表須要登陸接口返回的token,均須要跨線程組傳參

 

註冊接口的 Json 提取器

第二步:經過提取器(json、正則、xpath),提取須要跨線程組傳遞的值函數

 

註冊接口的 BeanShell 後置處理器

第三步學習

  1. 添加一個 BeanShell 後置處理器
  2. 添加一個 ${__setProperty()} 函數,按照圖片說明寫變量名

 

登陸接口的請求體

第四步測試

  1. 引用第三步在 BeanShell 後置處理器設置的變量名(phone)
  2. 經過 ${__P()} 來讀取對應的屬性值

 

第五步

運行腳本!就能發現能夠跨線程組傳遞參數啦spa

 

登陸接口的 BeanShell 後置處理器

同樣的步驟,添加 token 屬性線程

 

獲取訂單列表的請求參數

獲取 token 屬性3d

 

查看屬性顯示

能夠經過屬性顯示這個控件查看咱們在 BeanShell 設置的兩個屬性名和對應的值(phone、token)調試

 

拓展一下

若是想在一個 BeanShell 設置多個屬性,能夠這樣寫哦

每一個函數之間用 ; 分開便可(建議分)

 

而後能夠在屬性顯示中查看兩個不一樣的屬性都會生效

 

文件在轉接法

思路

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

 

線程組結構樹

第一步

  1. 添加兩個線程組,寫好接口
  2. 註冊接口後面添加保存響應文件(在監聽器下面)

 

註冊接口下的保存響應到文件

第二步

  1. 設置保存文件的路徑和文件名
  2. 記得選項跟着我勾哦,否則生成的文件名就不是你指定的(test.json)

 

CSV 數據文件設置

第三步

  1. 在第二個線程組添加 CSV 數據文件設置
  2. 文件名:設置剛剛保存的路徑
  3. 分隔符:json 數據建議填\t ,能夠根據本身的數據結構來定,能取出完整的數據就行了

 

 

看看read_phone 的數據是啥

一個 json 數據

 

登陸接口的請求體

第四步:接口正常引用 json 提取器的變量便可

 

登陸線程組的結果樹

 

這裏須要注意一點

在真正的請求取樣器前面須要加一個調試取樣器,上圖能夠看到第一個取樣器沒法取到變量值的,由於提取器都是後置處理器

因此第二個線程組元件的執行順序會是

  1. csv 數據文件設置
  2. 調試取樣器
  3. json 提取器
  4. 登陸請求
相關文章
相關標籤/搜索