0


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;

在这里插入图片描述


本文转载自: https://blog.csdn.net/cjz729765324/article/details/126266453
版权归原作者 警漳 所有, 如有侵权,请联系我们删除。

“Jmeter函数运用--实现类似CSV效果”的评论:

还没有评论