当前位置: 首页 > news >正文

Jmeter中变量如何使用?

Jmeter中变量如何使用?

  • 1、JMeter 变量的基本概念
  • 2 定义变量的几种方式
    • 2.1 用户自定义变量(User Defined Variables)
    • 2.2 CSV Data Set Config
    • 2.3 BeanShell / JSR223 赋值
    • 2.4 提取器生成变量
  • 3 变量的作用域说明
  • 4 变量嵌套与函数辅助
  • 5 变量使用实战案例
    • 5.1 HTTP 请求 - 登录接口
    • 5.2 JSON Extractor
    • 5.3 HTTP 请求 - 需要鉴权的接口
  • 6 常见问题与错误排查

1、JMeter 变量的基本概念

  • JMeter 中的“变量”指的是可在测试计划中被引用和替换的值;
  • 变量可以静态定义,也可以在运行过程中动态生成。
  • JMeter 支持以下几种变量类型:
类型示例来源
用户自定义变量${username}Test Plan 或 User Defined Variables
预处理器赋值${var}Beanshell / JSR223 PreProcessor
参数化变量${user_1}CSV Data Set Config
响应提取变量${token}JSON Extractor、Regular Expression Extractor
系统变量${__time(YMD)}函数助手或内置函数

2 定义变量的几种方式

2.1 用户自定义变量(User Defined Variables)

  • 在 Test Plan、Thread Group 或 Test Fragment 下添加 User Defined Variables 元件:
变量名:username
变量值:admin
  • 然后可以在任何地方用 ${username} 引用。

2.2 CSV Data Set Config

  • 用于从 CSV 文件中读取参数,进行数据驱动测试:
文件路径:data/users.csv
变量名:user,password
  • CSV 文件示例:
admin,123456
test,abcdef
  • 每个线程读取一行,并将 ${user} 和 ${password} 替换为相应值。

2.3 BeanShell / JSR223 赋值

  • 在 JSR223 PreProcessor 中设置变量:
vars.put("authToken", "Bearer 123456abc")
  • 引用方法:${authToken}。

2.4 提取器生成变量

  • 例如使用 JSON Extractor:
JSONPath:$.data.token
变量名:token
  • 提取成功后,${token} 就可用于后续请求。

3 变量的作用域说明

  • 变量的作用范围会影响其可用性和更新行为:
变量类型作用范围生命周期
用户自定义变量整个线程组内可见脚本运行期间不变
CSV 变量当前线程每线程一行,生命周期随线程
vars.put()当前线程动态创建,可被后续请求访问
提取变量当前线程请求后通常只在后续使用
  • 注意事项:

不同线程组间变量不可共享(除非用 JMeter Properties);
使用 vars.get() / vars.put() 访问线程变量;
使用 props.get() / props.put() 访问全局变量(不推荐用于并发写)。

4 变量嵌套与函数辅助

  • JMeter 支持变量嵌套和函数组合使用:
${__RandomString(8,abcdefghijklmnopqrstuvwxyz,varname)}
  • 可以动态生成一个变量 ${varname},后续引用 ${varname} 即可。
  • 嵌套示例:
服务器地址:${__P(env)}.example.com
  • 结合命令行传参:-Denv=dev。

5 变量使用实战案例

场景:登录后提取 Token 并用于后续请求

5.1 HTTP 请求 - 登录接口

  • 请求类型:POST
  • 请求体:
{"username": "admin", "password": "123456"}

5.2 JSON Extractor

  • JSONPath 表达式:$.data.token
  • 变量名称:token

5.3 HTTP 请求 - 需要鉴权的接口

  • Header:
Authorization: Bearer ${token}
  • 此场景实现了从响应中提取变量并在后续请求中使用的链式操作。

6 常见问题与错误排查

问题原因解决方案
${var} 显示为空变量未定义或作用域不对检查变量是否在当前线程组定义
CSV 参数未变化缓存导致、共享模式错误设置 Sharing Mode=Current Thread
多线程变量冲突使用 props 全局变量改用 vars 或线程安全写法
提取失败导致后续接口报错提取器配置不正确使用 Debug Sampler 检查返回体

相关文章:

  • 抖音授权登录-获取用户授权调用凭证
  • D. Plus Minus Permutation
  • PocketSCP:蛋白质口袋动态时空拓扑可视化分析新方法
  • 论文略读:DAILYDILEMMAS:REVEALINGVALUEPREFERENCES OFLLMSWITHQUANDARIESOFDAILYLIFE
  • OCR(光学字符识别)算法
  • 智能合约中人工智能驱动的漏洞分析:趋势、挑战与未来方向
  • 【leetcode-合并两个有序链表】
  • AI助手一键生成专业PPT(Gamma/Genspark/Kimi)
  • [Git] 标签管理
  • 三.Gitee远程操作标签操作
  • FastAPI基础入门(三)
  • 智慧医疗能源事业线深度画像分析(下)
  • MySQL 基础笔记
  • Reactive-Resume:重构你的简历编写体验
  • 【系统设计【1】】系统设计面试方法论:从0到百万用户的需求到架构的推演
  • 分布式I/O在食品包装行业中的应用
  • 【 WWDC25:新系统,新命名】
  • < 买了个麻烦 (二) 618 京东云--轻量服务器 > 可以为您申请全额退订呢。 挣取来的,东京云 轻量服务器,可以“全额退款“
  • 【Linux】进程控制(下)---程序替换宝藏岛
  • 前端~三维地图(cesium)点位聚合
  • 天津住房和城乡建设厅网站/淘宝关键词优化技巧
  • 手机网站首页模板/怎么制作网站教程
  • 企业qq免费版/seo网站优化师
  • wordpress滑动菜单/seo黑帽技术工具
  • 山东网站seo公司/百度入口网站
  • 在因特网上建设网站可选择的方案/湖南seo公司