参考文档:https://www.cnblogs.com/mawenqiangios/p/11088672.html
1 添加JDBC Connection Configuration
1.1 添加数据库连接配置:“Add-Config Element-JDBC Connection Configuration”
1.2 配置数据库连接信息
DataBase URL:
jdbc:mysql://111.230.93.155:3306/dataname?useUnicode=true&characterEncoding=utf-8
1)111.230.93.155:3306为数据库的地址和端口号;dataname为数据库名
2)useUnicode=true&characterEncoding=utf-8 指定字符的编码解码格式utf-8
JDBC Driver Class :com.mysql.jdbc.Driver 此为mysql数据库的驱动
Username: 数据库的登录用户名
Password: 数据库的密码
1.3 导入mysql驱动包(可忽略)
下载好mysql的驱动包(mysql-connector-java-5.1.7-bin.jar),
放到jmeter的lib目录下:E:\apache-jmeter-5.3\apache-jmeter-5.3\lib
选中测试计划,添加mysql驱动包
2 添加JDBC Request并设置变量
2.1 添加JDBC请求:“Add-Sampler-JDBC Request”,并配置请求
2.2 添加Debug PostProcessor用于查看变量token值的获取(此步用于调试,可忽略)
2.3 添加查看结果树查看运行结果:
运行后得到以下结果,说明jmeter发起的jdbc请求及变量设置正常。
3 循环读取库的信息,并参数化给之后的请求引用
实现循环读取库的信息,并传递到下一级HTTP Request请求
3.1 添加ForEach控制器(右键线程组–>逻辑控制器–>ForEach控制器),并先尝试如下设置
输入变量的前缀:token;
从之前的jdbc request设置的变量得知,我们要取的值为token_1、token_2、token_3…,所以这里输入token
Start index for loop:0;
变量循环启动的索引,第一个元素起始索引+1
End index for loop:${token_#},从2.2运行结果可以看到token_#=20;
变量循环结束的索引。
所以这里是取值token_1、token_2、…、token_20
输出的变量名称:token;
用于替换循环下的请求的变量,注意打√
3.2 在ForEach控制器下添加HTTP Request请求
注意此处需要在ForEach控制器下
添加,与ForEach同等级节点不支持循环取值(只能取第1个)
此例中HTTP Request并没有直接用到token,而是将token放到HTTP Header Manager中引用;
3.3 引用ForEach控制器的输出变量,此处引用放在header中,HTTP Header Manager可以不放在ForEach控制器下方:
执行结果如下,自动取数据库中20条记录运行,并请求成功:
此时Thread Group设置如下:
4 Thread Group设置
以上2种设置结果一样,取数据库中20条记录,循环2次,结果运行40次;如果线程数和循环都设置2,则运行80次。
其他方法:获取数据库的值
1 添加JDBC PostProcessor (所处位置不重要)
运行结果: