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


如果你想從頭學習Jmeter,可以看看這個系列的文章哦

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

 

前言

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

 

一定要通過 BeanShell 去跨線程組傳遞參數嗎?

  • 通過百度搜索:Jmeter 跨線程組傳遞參數
  • 會看到很多文章都是通過 BeanShell 寫代碼去實現的
  • 這對於代碼小白極其不友好!
  • 所以這篇文章將教會大家如何不需要寫代碼去實現跨線程傳遞參數!

 

定義屬性法

思路

  • 在Jmeter 中,屬性是全局生效的,可以動態設置
  • 但變量是每個線程獨有的
  • 所以通過設置屬性可以實現跨線程傳參,而不是通過變量的方式

 

測試計划結構樹

第一步

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

 

注冊接口的 Json 提取器

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

 

注冊接口的 BeanShell 后置處理器

第三步

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

 

登錄接口的請求體

第四步

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

 

第五步

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

 

登錄接口的 BeanShell 后置處理器

一樣的步驟,添加 token 屬性

 

獲取訂單列表的請求參數

獲取 token 屬性

 

查看屬性顯示

可以通過屬性顯示這個控件查看我們在 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. 登錄請求


免責聲明!

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



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