Jmeter连接数据库获取数据作为参数传递

@

一、导入驱动包

本次以postgresql数据库为例,网上下载数据库驱动包(其他数据库步骤一样)https://jdbc.postgresql.org/download.html.,将该jar包置于\lib\文件下;

在测试计划中添加pgsql驱动包
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210628185946338.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNjQ4ODIw,size_16,color_FFFFFF,t_70)

二、添加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: 数据库的密码
    ![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210628190503456.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNjQ4ODIw,size_16,color_FFFFFF,t_70)

三、添加采样器"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语句返回的结果
    ![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210628191616564.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNjQ4ODIw,size_16,color_FFFFFF,t_70)
    可以添加一个Debug PostProcessor用来调试查看你获取到的变量的值
    ![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210630175513239.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNjQ4ODIw,size_16,color_FFFFFF,t_70)

四、运行查看结果

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210628192453267.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNjQ4ODIw,size_16,color_FFFFFF,t_70)
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210628192908720.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNjQ4ODIw,size_16,color_FFFFFF,t_70)

五、在http请求中加入变量进行请求

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210628194521785.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNjQ4ODIw,size_16,color_FFFFFF,t_70)
![在这里插入图片描述]( https://img-blog.csdnimg.cn/2021062819461694.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNjQ4ODIw,size_16,color_FFFFFF,t_70)

六、循环读取数据库用户信息,传递参数请求

添加foreach控制器(线程组>逻辑控制器>foreach控制器)
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210628194918492.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNjQ4ODIw,size_16,color_FFFFFF,t_70)

  • 输入变量的前缀: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控制器下添加登录请求,并进行变量引用
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210628195630458.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNjQ4ODIw,size_16,color_FFFFFF,t_70)
运行后查看结果,获取到数据库中的100个用户账号,全部登录成功
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210628195839257.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNjQ4ODIw,size_16,color_FFFFFF,t_70)
以上这种处理需要自行查库获知总共有多少个用户,再去设置ForEach控制器的End index for loop值(设置为用户总数),就可以将库里所有用户进行参数传值登录了;

七、jmeter自动去获知数据库表的用户数,然后去循环取值进行登录

方法一:先用jdbc request查出用户数,再直接对ForEach控制器的End index for loop值进行设置
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210628200509851.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNjQ4ODIw,size_16,color_FFFFFF,t_70)
设置ForEach控制器的End index for loop值
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210628200634208.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNjQ4ODIw,size_16,color_FFFFFF,t_70)
*方法二:添加一个循环控制器
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210629100719854.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNjQ4ODIw,size_16,color_FFFFFF,t_70)
添加一个计数器
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210629135451964.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNjQ4ODIw,size_16,color_FFFFFF,t_70)
通过函数助手获取嵌套函数
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210629141648774.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNjQ4ODIw,size_16,color_FFFFFF,t_70)
请求接口参数嵌套调用,然后运行就可以了
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210629141846820.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNjQ4ODIw,size_16,color_FFFFFF,t_70)![在这里插入图片描述]( https://img-blog.csdnimg.cn/2021063014092594.jpg?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNjQ4ODIw,size_16,color_FFFFFF,t_70)

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