Jmeter书中不会教你的(2)——vars.get和${}引用区别

没有检索到摘要

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        在上一篇中,我们了解了在beanshell中可以利用vars获取和设置新的变量,也知道了如何用log去查看日志,以及两种获取变量值的方法。没看过的可以点这里Jmeter书本中不会教你的(1)——beanshell用来获取变量和设置变量的vars_agrapea的博客-CSDN博客

        本篇主要讲下两种获取变量值方法间的差异。同样设置一个配置元素,名为name,值为junjun

按如下代码执行,可见打印结果都是junjun。

log.info("vars.get获取的name值:"+vars.get("name"));
log.info("${}获取的name值:"+"${name}");

实际中,我们可能需要修改变量name的值后重新存入这个变量以供后续使用,如 

log.info("vars.get获取的name值:"+vars.get("name"));
log.info("${}获取的name值:"+"${name}");

//将name修改为junjun001
name1=vars.get("name");
name2=name1+"001";
log.info("字符串连接后:"+name2);

//将junjun001存入name变量
vars.put("name",name2);


log.info("修改后vars.get获取的name值:"+vars.get("name"));
log.info("修改后${}获取的name值:"+"${name}");

修改后的name值为junjun001,再次用两种方法打印结果,结果就不一致了。

由此可见,vars.get可以获取修改后的变量值,而${}获取的还是原来设置的变量值。 

-------------------------------------------------------------------------------

如果觉得我的文章对您有用,请收藏+关注,您的支持是我坚持的动力!

### MeterSphere 中 `vars.put()` 结合动态键 `${__metersphere_env_id}` 的用法 在性能测试工具如 JMeter 或 MeterSphere 中,`vars.put()` 是一种常用的方法来动态创建修改线程范围内的变量。结合内置函数(如 `${__metersphere_env_id}`),可以进一步增强脚本的灵活性可维护性。 #### 使用场景描述 假设在一个测试计划中,需要根据不同的环境 ID 自动生成对应的 URL 地址或其他参数化需求。可以通过以下方式实现这一目标: 1. 利用 MeterSphere 提供的内置变量 `${__metersphere_env_id}` 获取当前执行环境的唯一标识符。 2. 借助 Groovy 脚本调用 `vars.put()` 方法将该值映射至新的自定义变量名下。 3. 随后可以在 HTTP 请求或者其他组件中引用新生成的变量。 以下是具体实施步骤及其代码示例: #### 实现细节 ##### 示例代码 ```groovy // 获取当前环境ID作为动态部分 String envId = vars.get("__metersphere_env_id") ?: "defaultEnv" // 构造完整的URL地址 String baseUrl = "https://" + envId + ".example.com/api/v1/resource" vars.put("dynamicUrl", baseUrl) log.info("Generated Dynamic URL: ${baseUrl}") ``` 在此段脚本中: - 我们首先尝试读取预定义的特殊属性 `__metersphere_env_id` 并赋予默认值以防其为空的情况发生[^2]。 - 接着拼接形成最终的目标服务端点路径字符串。 - 最终通过调用 `vars.put("dynamicUrl", baseUrl)` 把组合后的结果存入名为 `dynamicUrl` 的新变量之中以便稍后重用。 #### 应用场合扩展 除了基本的例子之外,在实际项目里可能还会碰到更复杂的情形,例如依据不同条件分支决定加载哪套配置文件等等。此时同样能发挥类似技术的优势简化流程控制逻辑结构设计。 假设有这样一个需求——根据不同环境分别连接到各自的数据库实例,则可以用如下方法达成目的: ```groovy switch (vars.get("__metersphere_env_id")) { case "prod": vars.put("dbHost", "production-db-host.example.com") break; case "staging": vars.put("dbHost", "staging-db-host.example.com") break; default: vars.put("dbHost", "localhost") } ``` 这里展示了如何基于特定输入源切换多种可能性下的行为模式,从而满足更加精细粒度的要求设定标准[^3]。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

agrapea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值