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值
在这里插入图片描述
*方法二:添加一个循环控制器
在这里插入图片描述
添加一个计数器
在这里插入图片描述
通过函数助手获取嵌套函数
在这里插入图片描述
请求接口参数嵌套调用,然后运行就可以了
在这里插入图片描述在这里插入图片描述

posted @ 2022-04-01 19:26  回忆式~过去  阅读(654)  评论(0编辑  收藏  举报