JMeter 数据库连接及查询、应用

发布时间 2023-03-24 14:33:13作者: 小冰钓鱼

 

本文主要是关于数据库连接、数据库查询、使用查询结果进行传参。

数据库连接

1、需要下载的插件:

      Mysql:mysql-connector-java-5.1.49-bin.jar

      百度网盘:https://pan.baidu.com/s/18KhiK1LnoTMf2dJqjTj15A    7nsg

      Oracle:ojdbc6-1.0.jar

      百度网盘:https://pan.baidu.com/s/1QNsyvFNHQnkBjIbVD1586g    h4k0

      下载完毕后,把jar包放到D:\Jmeter\apache-jmeter-5.2.1\lib,即JMeter的lib目录下,重启JMeter就可以了。

2、数据库连接配置

      添加路径:选择某个筛选器,右键--Add--Config Element--JDBC Connection Configuration

     下图中红框中是需要注意的地方:

  • Variable Name for created pool:配置一个变量名称,后面进行JDBC Request时,需要用到这个变量;
  • Vaildation Query:选择一种查询模式,一般按照红框选择就可以;

      Database URL:

  • Mysql:jdbc:mysql://IP:端口号/数据库名称。其中:如果想要支持多个查询语句,?allowMultiQueries=true;建议加上?useSSL=false ,因为 MySQL 5.5.45+, 5.6.26+ and 5.7.6+ 要求进行 SSL connectionl时,要有身份验证,这样可以去掉这个验证,当然还有数据库服务器的配置。存在多个参数时,用&连接;
  • Oracle:jdbc:oracle:thin:@IP:端口号:sid

       

      

 3、发起JDBC请求

      Mysql和Oracle一样。

      添加路径:选择某个线程组,右键--Sampler--JDBC Request

      注意事项:

  • 第一个红框内:数据库变量名称,必须和数据库配置中的数据库变量名称一致;
  • 第二个红框:查询方式。可以根据实际需要进行选择,一般可以默认:Select Statement,select * from 表A;如果查询条件是通过其他变量传入时,需要选择Prepared Select Statement,select * from 表A   where vccolumn1='${bizID}',记得用把变量放到引号中,千万不要在查询语句最后添加分号,否则会报错误;
  • 第三个红框:变量名称,把查询结果保存到这个变量中,方便后续使用。

 

4、利用数据库的查询结果进行传参

     例:变量名称为userID,在使用时,需要${userID_index},userID_0=查询结果的总数量,userID_1为查询结果的第一个数值,依次类推。可以添加一个Debug PostProcessor 进行查看;若查询语句的查询结果为两个字段,select a,  b from 表A,则需要在此添加两个变量名称,引用方法和一个变量一样,不确定的话,可以添加Debug PostProcessor进行查看。

5、如何实现从数据库获取数据并依次作为变量传给下个接口

       方法1:通过ForEach Controller实现

  • 首先查询出需要的数据,并且保存到变量中;
  • 通过JDBC Request 查询数据的数量,并保存到变量count中;
  • 添加ForEach Controller,配置如下:

          Input variable prefix : 输入变量的前缀;

          Start index for loop: 变量循环启动的索引,第一个元素起始索引+1;

          End index for loop: 变量循环结束的索引,此处可以填写${count}

          Output variable name : 输出的变量名称,用于替换循环下的请求的变量

         

  • 后续接口引用时,变量名称为${Output variable name};

      

      方法2:通过添加逻辑控制器Loop Controller,计数器实现

       

     

      进行传参需要用到函数_V,在函数助手可以看到;

  • ${index}:这里n为计数器得出的值,从1到${count_1}
  • _V函数: 若${__V(userID_${n})}中${n}=2, 则${__V(userID_2)}返回userID_2的值