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

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

        本篇主要讲下两种获取变量值方法间的差异。同样设置一个配置元素,名为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可以获取修改后的变量值,而${}获取的还是原来设置的变量值。 

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

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

### 如何在 JMeter 中实现 GET 请求的参数化 #### 使用 CSV 数据文件进行参数化 CSV 文件可以存储多个测试数据集,每一列代表一个参数。通过 `CSV Data Set Config` 组件读取这些数据并用于 HTTP 请求。 1. **准备 CSV 文件** 创建名为 `testData.csv` 的文件,内容如下: ```csv searchTerm,expectedResultCount JMeter,100 Apache,80 性能测试,75 ``` 2. **配置 CSV Data Set Config** 在测试计划中添加一个新的线程组,并在其下添加 `CSV Data Set Config`[^2]。 设置属性: - Filename: `${__P(testdata,)}/testData.csv` - Variable Names: `searchTerm, expectedResultCount` - Delimiter: `,` - Recycle on EOF? : True - Stop Thread on EOF? : False - Sharing Mode: All threads 3. **构建 HTTP 请求** 在同一线程组内添加 `HTTP Request Sampler` 并配置 URL 路径为百度搜索引擎 API 地址[^1]。 URL 示例:`https://www.baidu.com/s?wd=${searchTerm}` 这会动态替换每次迭代中的占位符 `${searchTerm}` 为来自 CSV 文件的新值。 4. **验证结果** 为了观察实际发送给服务器的数据以及接收到的结果,在同一级别上增加 “View Results Tree Listener”,以便于调试期间检查请求/响应详情。 #### 利用 BeanShell 进行复杂逻辑处理 对于更复杂的场景,比如加密查询字符串或其他预处理工作,则可以通过编写自定义 Java 类来完成特定功能,并将其打包成 jar 放置到 JMeter 安装目录下的 lib/ext 文件夹里[^3]。 接着可以在任何采样器之前加入 `BeanShell PreProcessor` 来执行必要的初始化操作,例如加载外部资源或计算某些表达式的输出作为后续使用的变量。 示例代码片段展示如何调用已编译好的类方法并将返回值存入环境变量供其他组件访问: ```java // 假设 MyUtils 是已经部署至 jmeter/lib/ext 下面的一个工具库 import com.example.MyUtils; String encryptedParam = MyUtils.encryptParameter(vars.get("rawInput")); vars.put("encryptedValue", encryptedParam); log.info("Encrypted parameter value is " + encryptedParam); ``` 上述过程展示了两种常见的 JMeter 参数化技术——基于静态文本文件输入编程方式扩展框架能力的方法。这两种手段能够显著提高自动化脚本灵活性与可维护性的同时也简化了大规模并发测试的设计流程。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

agrapea

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

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

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

打赏作者

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

抵扣说明:

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

余额充值