jmeter连接mysql数据库
总体步骤如下:
- 下载mysql的jar包放入到jmeter的lib下,然后重启jmeter
- 配置JDBC Connection Configuration
- 配置JDBC Request
- 在请求中引用查询到的结果变量,可以结合计数器取每一个结果值:${__V(tname_${index})}
具体实施步骤
- 下载Mysql jdbc驱动包
尽量保证其版本和你的数据库版本一致,至少不低于数据库版本,否则可能有问题。
mysql官网下载地址:https://dev.mysql.com/downloads/connector/j/
JDBC驱动在mysql的官网下载:https://dev.mysql.com/downloads/file/?id=477058,不需要注册,直接点击左下角的小字
- 在测试计划下面把JDBC驱动包导入,如下图
- 线程组下添加一个配置元件JDBC Connection Configuration
- Variable Name:自定义参数,在JDBC Request中会用到
- Database URL:jdbc:mysql:// 数据库IP地址:数据库端口/数据库名称;jdbc:mysql://localhost:3306/mysql?serverTimezone=UTC&characterEncoding=utf-8,注意:?后面的serverTimezone=UTC&characterEncoding=utf-8不能缺少,否则会报时区错误。
- JDBC Driver Class:com.mysql.jdbc.Driver
- Username:数据库用户名
- Password:数据库密码
- 在添加一个Sampler:JDBC Request
4.1 由于只需要在数据库中取一次数据,即 jdbc取样器只需要执行一次,可以使用仅一次控制器;如下图:
配置路径:逻辑控制器——仅一次控制器
- 运行之后,数据库会返回某一列下的数据
- 在http请求中引用tname变量名,如果有一列数据返回,引用变量的时候可以输入${tname_1},发送请求的参数值就是 周启元
variables names 参数使用方法:
Jmeter官网的解释是:如果给这个参数设置了值,它会保存sql语句返回的数据和返回数据的总行数。假如,sql语句返回2行,3列,且variables names设置为A,C,那么如下变量会被设置为:
A_#=2(总行数)
A_1=第1列,第一行;如上面的变量${tname_1};
A_2=第1列,第2行
C_#=2(总行数)
C_1=第3列,第1行
C_2=第3列,第2行
如果返回结果为0,那么A_#和C_#会被设置为0,其他变量不会设置值。
如果第一次返回6行数据,第二次只返回3行数据,那么第一次的6行数据变量会被清除
可以使用${A_#}、${A_1}...来获取相应的值
- 如果想循环数据库返回的值,可以使用计数器,加引用的变量${__V(tname_${index})};如下图
根据上方数据库返回的tname列下有9行数据,在计数器中最大值填入9,在输入一个变量名index;
在http请求中引用数据量返回的变量+计数器的变量:${__V(tname_${index})};
- 运行结果