在我们的接口测试中,有很多场景都需要去DB中查询某个字段的值作为http请求的入参,亦或者是我们发送完http请求后,需要校验DB中字段是否生效,即需要从DB中捞出数据来进行对比校验。基于这样的应用场景,我们本节来学习下如何在Jmeter中使用JDBC请求。本节是基于Mysql数据库进行实操的。
应用到的组件:JDBC Connection Configuration,JDBC Request,view Result Trees
一、配置数据库连接信息
1、下载mysql connectors
https://www.mysql.com/products/connector/
2、将其拷贝至jmeter lib目录下,重启一下jmeter
3、新建JDBC Connection Configuration
4、填写配置信息
Database URL:jdbc:mysql://URL信息:端口号
Username:用户名信息
Password:密码信息
5、为配置信息命名如:mysql_config,以供引用
二、新建jdbc请求,调试数据库连接
1.新建jdbc request
2、引用配置信息,并写简单的查询语句
3、新建结果树,运行脚本,观察结果
调试成功,连接正常啦!
接下来我们进一步探讨如果查询语句的条件中的值是通过上一个请求的返回结果提取出来的一个参数或者是外部数据源参数了,这个时候我们怎么在jdbc请求中使用参数化了?
三、JDBC请求参数化
这里我们依旧使用上一节的外部数据源为例,结合上面的demo,进一步实践
方式一:在sql query中使用$的方式引用,运行,依旧成功
方式二:sql query中使用”?“作为占位符,并传递参数值和参数类型
四、JDBC 返回值提取参数引用
1、新建jdbc 请求,调试
sql 语句:
select g.remote_control_sn, g.cmd_timestamp from payCloud.gizwits_control g where g.mac = '862180033468635' order by g.create_time desc limit 2;
返回两行数据
2、将查询出的值传入到jmeter 的variables中,并给其定义别名。同时我们新建一个debug sampler,用来log 变量值
结果分析:
sn 和timestamp 就是我们刚刚指定的别名,如
sn_#=2:sn返回了两条数据
sn_1=816:表示第一条数据的值
sn_2=815:表示第二条数据的值
也即:
A_#=2 (总行数)
A_1=第1列, 第1行
A_2=第1列, 第2行
B_#=2 (总行数)
B_1=第2列, 第1行
B_2=第2列, 第2行
3、参数引用
使用$、$...来获取相应的值,观察传递的参数,确实是我们提取出来的参数
领取专属 10元无门槛券
私享最新 技术干货