JMeter 配置元件之按条件读取CSV Data Set Config

实践环境

win10

JMeter 5.4.1

需求描述

需求是这样的,需要压测某个接口(取消分配接口),请求这个接口之前,需要先登录系统(物流WMS系统),并在登录后,选择并进入需要操作的仓库,然后请求接口,接口报文如下:

复制代码
{
 "orderNos": ["OB-20231221-0000025","OB-20231221-0000026"], 
 "warehouseCode": "763DCD"
}

要求warehouseCode和登录用户所属仓库保持一致,orderNos必须归属于warehouseCode,简单理解就是登录用户只能操作所选仓库的订单。

此外,每个订单参数只能用一次

脚本设计与实现

整体实现

具体设计如下:

1、用户自定义变量配置

2、将登录用户数据(登录账号,登录密码,所属仓库)存放在一个文本文件,如下:

load_testing_user_info.txt

复制代码
userName,password,warehouseCode
opt022DCP1,iOKqmObkHLq+d5whJzcBr/.../kmUN/ND393iQkE=,022DCP
opt763DCD573,iOKqmObkHLq+d5whJzcBr/.../kmUN/ND393iQkE=,763DCD
opt022DCP782,iOKqmObkHLq+d5whJzcBr/.../kmUN/ND393iQkE=,022DCP
opt022DCP32,iOKqmObkHLq+d5whJzcBr/.../kmUN/ND393iQkE=,022DCP
opt763DCD753,iOKqmObkHLq+d5whJzcBr/.../kmUN/ND393iQkE=,763DCD
opt763DCD150,iOKqmObkHLq+d5whJzcBr/.../kmUN/ND393iQkE=,763DCD
...

3、将仓库订单数据分别按仓库分组存放在不同的文件

763DCD-orders.txt

复制代码
orderWarehouse@orders
763DCD@"OB-20231221-0000025","OB-20231221-0000026"
763DCD@"OB-20231221-0000027","OB-20231221-0000028"
763DCD@"OB-20231221-0000029","OB-20231221-0000030"
763DCD@"OB-20231221-0000031","OB-20231221-0000032"

022DCP-orders.txt

复制代码
orderWarehouse@orders
022DCP@"OB-20231221-0000029","OB-20231221-0000030","OB-20231221-0000031","OB-20231221-0000032","OB-20231221-0000033"
022DCP@"OB-20231222-0048049","OB-20231222-0048050","OB-20231222-0048051","OB-20231222-0048052","OB-20231222-0048053"
022DCP@"OB-20231222-0053060","OB-20231222-0053061","OB-20231222-0053062","OB-20231222-0053063","OB-20231222-0053064"
022DCP@"OB-20231222-0058083","OB-20231222-0058084","OB-20231222-0058085","OB-20231222-0058087","OB-20231222-0058086"

4、将仓库订单数据文件添加到不同的IF逻辑控制器下,增加IF判断条件--判断登录用户所属仓库和是否和订单数据文件所属仓库一致,如果一致则可读取对应数据文件

5、要求订单数据不可重复使用,步骤3操作,会导致CSV Data Set Config配置元件的Recycle on EOF?: FalseStop thread on EOF?:True 配置项无法起到精确控制(有作用,但读取到文件末尾时不会立即停止,还是有线程会继续从头读取,至于啥时候才会全部停止,我也不清楚,最后线程会因为这个配置停止就是)

解决方案:在对应的IF逻辑控制下,添加线程共享计数器,并在数据文件之后,添加脚本采样器,脚本里判断计数器当前值是否大于文件最大内容行数,如果大于则停止线程

复制代码
if (Long.parseLong(vars.get('fileLineReadCnt1')) > Long.parseLong(vars.get('maxFileLineNum2'))) {
    ctx.getThread().stop()
} 

2024最新Jmeter接口测试从入门到精通(全套项目实战教程)

相关推荐
choke2337 小时前
软件性能测试实战:从基础概念到 JMeter 全组件使用
jmeter
网络安全-杰克1 天前
Jmeter压力测试工具安装与使用
自动化测试·软件测试·测试工具·jmeter·职场和发展
少云清3 天前
【金融项目实战】6_接口测试 _Jmeter自动化脚本实现(重点)
jmeter·自动化·金融项目实战
少云清3 天前
【金融项目实战】5_接口测试 _Jmeter功能脚本实现
jmeter·金融项目实战
卖个几把萌4 天前
【11】JMeter在GUI页面修改语言后右上角不显示线程数和持续时间问题解决
测试工具·jmeter
张永清-老清4 天前
每周读书与学习->JMeter性能测试脚本编写实战(四)-利用JMeter对MySQL数据库查询进行性能测试
学习·jmeter·性能调优·jmeter性能测试·性能分析·每周读书与学习
Jul1en_4 天前
【性能测试工具】JMeter下载安装、编辑环境变量和中文配置
测试工具·jmeter
一碗面4216 天前
Jmeter的进阶功能
jmeter
月明长歌8 天前
从零构建高并发测试体系:JMeter 接口压测与全链路实战指南
jmeter
一碗面4219 天前
Jmeter的基本使用
jmeter