Jmeter连接数据库获取数据作为参数传递
@
目录
一、导入驱动包
本次以postgresql数据库为例,网上下载数据库驱动包(其他数据库步骤一样)https://jdbc.postgresql.org/download.html.,将该jar包置于\lib\文件下;
在测试计划中添加pgsql驱动包
二、添加JDBC Connection Configuration
- DataBase URL: jdbc:mysql://192.168.88.130:3306/dataname?useUnicode=true&characterEncoding=utf-8
- 192.168.88.130:3306为数据库的地址和端口号;dataname为数据库名
- useUnicode=true&characterEncoding=utf-8 指定字符的编码解码格式utf-8
- JDBC Driver Class : com.mysql.jdbc.Driver 此为mysql数据库的驱动
- Username: 数据库的登录用户名
- Password: 数据库的密码
三、添加采样器"JDBC Request"
- ariable Name: 数据库连接池的名字,需要与上面配置的JDBC Connection Configuration中Variable Name Bound Pool的Variable Name相同
- Query:填写的sql语句未尾不要加“;”
- Parameter valus:参数值
- Parameter types:参数类型,可参考:Javadoc for java.sql.Types
- Variable names:保存sql语句返回结果的变量名
- Result variable name:创建一个对象变量,保存所有返回的结果
- Query timeout:查询超时时间
- Handle result set:定义如何处理由callable statements语句返回的结果
可以添加一个Debug PostProcessor用来调试查看你获取到的变量的值
四、运行查看结果
五、在http请求中加入变量进行请求
六、循环读取数据库用户信息,传递参数请求
添加foreach控制器(线程组>逻辑控制器>foreach控制器)
- 输入变量的前缀:phone; 从之前的jdbc request设置的变量得知,我们要取的值为phone_1、phone_2、phone_3......,所以这里输入phone
- Start index for loop:0; 变量循环启动的索引,第一个元素起始索引+1
- End index for loop:101; 变量循环结束的索引。所以这里是取值phone_1、phone_2、...、phone_101,实测填写100只会执行到99,所以需要+1
- 输出的变量名称:t_phone; 用于替换循环下的请求的变量
在ForEach控制器下添加登录请求,并进行变量引用
运行后查看结果,获取到数据库中的100个用户账号,全部登录成功
以上这种处理需要自行查库获知总共有多少个用户,再去设置ForEach控制器的End index for loop值(设置为用户总数),就可以将库里所有用户进行参数传值登录了;
七、jmeter自动去获知数据库表的用户数,然后去循环取值进行登录
方法一:先用jdbc request查出用户数,再直接对ForEach控制器的End index for loop值进行设置
设置ForEach控制器的End index for loop值
*方法二:添加一个循环控制器
添加一个计数器
通过函数助手获取嵌套函数
请求接口参数嵌套调用,然后运行就可以了