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接口测试从入门到精通(全套项目实战教程)

相关推荐
惜.己9 小时前
Jmeter中的配置原件(四)
java·前端·功能测试·jmeter·1024程序员节
古人诚不我欺1 天前
jmeter常用配置元件介绍总结之分布式压测
分布式·jmeter
綦枫Maple1 天前
Jmeter基础篇(22)服务器性能监测工具Nmon的使用
运维·服务器·jmeter·性能监控·nmon
古人诚不我欺1 天前
jmeter常用配置元件介绍总结之线程组
java·开发语言·jmeter
惜.己1 天前
Jmeter中的监听器(一)
测试工具·jmeter·1024程序员节
我非夏日2 天前
JMeter进阶篇
jmeter
惜.己2 天前
Jmeter中的配置原件(三)
功能测试·测试工具·jmeter·1024程序员节
綦枫Maple2 天前
Jmeter基础篇(23)TPS和QPS的异同
数据库·jmeter·oracle
惜.己2 天前
Jmeter中的配置原件(二)
测试工具·jmeter·1024程序员节
我非夏日2 天前
JMeter项目实战
jmeter