本文主要是关于数据库连接、数据库查询、使用查询结果进行传参。
数据库连接
1、需要下载的插件:
Mysql:mysql-connector-java-5.1.49-bin.jar
百度网盘:https://pan.baidu.com/s/18KhiK1LnoTMf2dJqjTj15A 7nsg
Oracle:ojdbc6-1.0.jar
百度网盘:https://pan.baidu.com/s/1QNsyvFNHQnkBjIbVD1586g h4k0
下载完毕后,把jar包放到D:\Jmeter\apache-jmeter-5.2.1\lib,即JMeter的lib目录下,重启JMeter就可以了。
2、数据库连接配置
添加路径:选择某个筛选器,右键--Add--Config Element--JDBC Connection Configuration
下图中红框中是需要注意的地方:
- Variable Name for created pool:配置一个变量名称,后面进行JDBC Request时,需要用到这个变量;
- Vaildation Query:选择一种查询模式,一般按照红框选择就可以;
Database URL:
- Mysql:jdbc:mysql://IP:端口号/数据库名称。其中:如果想要支持多个查询语句,?allowMultiQueries=true;建议加上?useSSL=false ,因为 MySQL 5.5.45+, 5.6.26+ and 5.7.6+ 要求进行 SSL connectionl时,要有身份验证,这样可以去掉这个验证,当然还有数据库服务器的配置。存在多个参数时,用&连接;
- Oracle:jdbc:oracle:thin:@IP:端口号:sid
3、发起JDBC请求
Mysql和Oracle一样。
添加路径:选择某个线程组,右键--Sampler--JDBC Request
注意事项:
- 第一个红框内:数据库变量名称,必须和数据库配置中的数据库变量名称一致;
- 第二个红框:查询方式。可以根据实际需要进行选择,一般可以默认:Select Statement,select * from 表A;如果查询条件是通过其他变量传入时,需要选择Prepared Select Statement,select * from 表A where vccolumn1='${bizID}',记得用把变量放到引号中,千万不要在查询语句最后添加分号,否则会报错误;
- 第三个红框:变量名称,把查询结果保存到这个变量中,方便后续使用。
4、利用数据库的查询结果进行传参
例:变量名称为userID,在使用时,需要${userID_index},userID_0=查询结果的总数量,userID_1为查询结果的第一个数值,依次类推。可以添加一个Debug PostProcessor 进行查看;若查询语句的查询结果为两个字段,select a, b from 表A,则需要在此添加两个变量名称,引用方法和一个变量一样,不确定的话,可以添加Debug PostProcessor进行查看。
5、如何实现从数据库获取数据并依次作为变量传给下个接口
方法1:通过ForEach Controller实现
- 首先查询出需要的数据,并且保存到变量中;
- 通过JDBC Request 查询数据的数量,并保存到变量count中;
- 添加ForEach Controller,配置如下:
Input variable prefix : 输入变量的前缀;
Start index for loop: 变量循环启动的索引,第一个元素起始索引+1;
End index for loop: 变量循环结束的索引,此处可以填写${count}
Output variable name : 输出的变量名称,用于替换循环下的请求的变量
- 后续接口引用时,变量名称为${Output variable name};
方法2:通过添加逻辑控制器Loop Controller,计数器实现
进行传参需要用到函数_V,在函数助手可以看到;
- ${index}:这里n为计数器得出的值,从1到${count_1}
- _V函数: 若${__V(userID_${n})}中${n}=2, 则${__V(userID_2)}返回userID_2的值