当前位置: 首页 > 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 检查返回体
http://www.xdnf.cn/news/979615.html

相关文章:

  • MySQL 三表 JOIN 执行机制深度解析
  • 基础数论一一同余定理
  • Qt 动态插件系统QMetaObject::invokeMethod
  • 【docker】docker registry搭建私有镜像仓库
  • 开源 java android app 开发(十二)封库.aar
  • SD-WAN 技术如何助力工业物联网(IIoT)数据传输?深度解析传统方案对比与应用实践
  • Chrome 优质插件计划
  • 智慧农业物联网实训中心建设方案
  • 趋境科技英特尔生态沙龙举办,打通大模型私有化“最后一公里”
  • 当简约美学融入小程序 UI 设计:开启高效交互新篇
  • 【Java学习日记38】:C语言 fabs 与 Java abs 绝对值函数
  • element plus的el-form重置无效
  • CavityPlus: 北大团队研发的综合性蛋白质结合位点检测及功能分析网络服务器
  • 【python】预测投保人医疗费用,附insurance.csv数据集
  • 嵌入式系统内核镜像相关(三)
  • React 状态管理指南:Redux 原理与优化策略
  • 避坑:启动sdk-c demo master需要注意的事情
  • 【AI】模型vs算法(以自动驾驶为例)
  • 基于React Native的HarmonyOS 5.0休闲娱乐类应用开发
  • 多分类性能评估方法
  • 企业级RAG系统架构设计与实现指南(基于Java技术栈)
  • uniapp 腾讯云 COS 访问控制实战(细粒度权限管理)
  • 撤销Git合并操作方法总结
  • 七牛云域名配置与CNAME解析
  • 李沐 《动手学深度学习》 | 实战Kaggle比赛:预测房价
  • 【PhysUnits】17.7 readme.md更新
  • 从代码学习深度强学习 - Dyna-Q 算法 PyTorch版
  • Android Gson工具类
  • 免下载苹果 IPA 文件重签名工具:快速更换应用名称和 BID的教程
  • xcode中project.pbxproj点开为空白问题