需求:
需要对设备进行批量删除操作,被删除的数据通过查询数据库得来,删除操作通过删除设备接口执行
思路
1、使用jmeter的jdbc插件,通过JDBC request 获取sql查询结果,保存到变量中
2、在删除设备的取样器中,引用jdbc查询结果的变量,循环调用删除接口删除设备
3、循环可以通过循环控制器和foreach循环两种方式实现
(一)第一种方法:使用循环控制器
操作
1、我使用的数据库是mysql数据库,因此需要先准备mysql的驱动。将准备好的mysql-connector-java-8.0.20.jar保存到D:\apache-jmeter-5.2.1\lib\ext(放在jmeter的安装目录\lib\ext文件夹)中
2、重启jmeter
3、配置jdbc连接池
在线程组下添加配置原件JDBC Connection Configuration,并填写相关信息,如下图
4、创建jdbc request取样器,用于获取sql查询结果,如下图
说明:查询结果的行数,会保存到变量diviceId_# 变量中,查询结果的第一行字段值,会保存到变量deviceId_1中,查询结果的第二行字段值,会保存到变量deviceId_2中,依次类推。
5、创建一个循环控制器,循环次数为${deviceId_#},如下图
6、创建一个计数器,用于控制取字段的第几行的值。如下图
7、创建http取样器,用于执行删除设备接口。如下图
其中:deviceId作为参数在请求路径中,这里用到了一个函数嵌套的函数:${_V(deviceId${index})}
7、查看执行结果
jdbc request取样器查询结果
(二)第二种方法:使用foreach循环
操作步骤:
1、配置jdbc连接池和创建jdbc request取样器步骤同上
2、创建一个foreach循环控制器,控制循环的次数,也就是查询结果的行数。如下图
注意:
1)、开始循环字段从0开始。
2)、结束循环字段填写:${deviceId_#},也就是jdbc取样器的查询结果中的行数,保存在变量deviceId_#中
3)、输出变量名称为id,给下一个http取样器使用。
3、创建一个http取样器,用于删除设备
如图:
4、结果查看