Jmeter函数运用--实现类似CSV效果

项目场景:

在使用Jmeter测试接口时,有20多组变量需要引入,使用csv的话能够快速解决问题,考虑到后期维护会多出csv文件,不方便管理。于是使用现有的函数进行处理


描述

此处模拟需求数据
接口需要传入三个动态参数,“星期”,“活动”,“三餐”,通过csv文件管理如下,实际数据比模拟数据多
在这里插入图片描述
因为会多出一个文件并且jmeter还需配置文件路径,个人认为加大了保存和维护成本。所以准备弃用。


解决方案:

Jmeter提供了现有的函数,并且相关学习文档较多,使用起来容易,学习成本低。这里我将几个函数进行了组合,实现了类似CSV效果,大家可以参考。
使用如下方法加函数:
【Jmeter循环控制器,计数器,__V拼接变量,__split字符串切割】

1、首先循环控制器记录变量个数,因为要执行这么多次
2、计数器,记录循环到多少次,后续需要引用计数器定义变量。相当于定义一个索引
3、__V,是通过固定变量名 + 计数器索引来锁定实际调用变量。如:var1,var2…varn。直接通过${__V(var${num})}可以锁定执行变量
4、__split,将一组变量写在一个jmeter中,通过“@”符号隔开,利用__split函数分割,最终抓取结果${__split(${__V(var${num})}, newVar, @)},分割后的结果会重新保存在newVar变量中。
此处有个问题:该函数需要放入前置处理器:BeanShell PreProcessor中调用一次,不然取样器拿不到。我也不明白咋回事!!!

实际使用效果可以参考,这里不过多展示、

1、整体结构树:
整体结构
2、定义变量,变量结构类似csv,这里的@可以随便定义,我只是为了查看方便。
定义的变量名
3、因为我有5个变量,这边循环5次
循环控制器
4、记录索引,初始值1,每次加1。索引:num
计数器
5、重点在与函数结合:

`${__split(${__V(var${num})}, newVar, @)}`;

${__V(var${num})}   提取出用户自定义变量 ,并将变量重新赋值给newVar。类似如下:
newVar = var1 = “星期一@上班@Object:{"早餐":"白兰","中餐":"白兰","晚餐":"白兰"}”
通过__split分割变量,按照@分割

分割结果类似这样,实际不是。仅供参考和理解:
newVar = [星期一, 上班, Object:{"早餐":"白兰","中餐":"白兰","晚餐":"白兰"}]
当我们需要使用分割后变量可以通过 newVar_N 来获取
newVar_1 = 星期一;
newVar_2 = 上班;
newVar_3 = Object:{"早餐":"白兰","中餐":"白兰","晚餐":"白兰"}];

6、需要提前放前置处理器调用一下,应该还有其他方法,我觉得这个好用点。
前置处理器

7、实际调用结果如下:
获取变量参数


记录一个sql,用来从数据库拉取数据快速导入Jmeter变量中

SELECT
	@id := @id + 1 AS id,
	concat( "var", @id ),
	CONCAT( 字段, "@", 字段, "@", 字段 ) 
FROM
	TABLE,
	( SELECT @id := 0 ) r;

在这里插入图片描述

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值