jmeter从数据库获取数据并作为变量传输

最近一个项目是要先发一个邀请,生成一个邀请id,然后填写对应邀请再提交,这里就是后一个接口需要用到前一个接口生成的邀请id,但是第一个接口并没有返回一个邀请id,此时就无法用正则表达式提取返回结果中的邀请id了,所以只能从数据库中查询出邀请id传输到下一个接口中,因此,今天我们来看看jmeter从数据库获取数据并作为变量传输

首先是用jmeter连接数据库,我这篇博客中(https://www.cnblogs.com/jasmine0627/p/9493314.html)已经做了详细讲解,因此这里不再重述

1、添加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语句返回的结果

 

variables names设置为A,B,C,那么如下变量会被设置为:

  A_#=2 (总行数)
  A_1=第1列, 第1行
  A_2=第1列, 第2行 
  C_#=2 (总行数) 
  C_1=第3列, 第1行
  C_2=第3列, 第2行

      • 如果返回结果为0,那么A_#和C_#会被设置为0,其它变量不会设置值。
      • 如果第一次返回6行数据,第二次只返回3行数据,那么第一次那多的3行数据变量会被清除。
      • 可以使用${A_#}、${A_1}...来获取相应的值

2、在http请求中加入变量

invite_id_N:N为数字,指取第几个数

------------------------------------------------------------------------------------------------

实际中,我们是取出多个值,循环传入数据库

1、添加循环控制器:线程组--逻辑控制器--循环控制器

2、目标接口放入到循环控制器下,另外添加一个计数器,因为我们取的值是根据${invite_id_N}来取的,那么这个N可以通过计数器递增的方式获得

 

3、计数器

4、通过函数助手获取嵌套函数

函数__V可以用于执行变量名表达式,并返回执行结果。它可以被用于执行嵌套函数引用(目前JMeter不支持)。

例如,如果存在变量A1、A2和N=1,则:

${A1}:能正常工作。

${A${N}}:无法正常工作(嵌套变量引用)。

${__V(A${N})}:可以正常工作。A${N}变为A1,函数 __V返回变量值A1。

5、运用在目标接口中

 

 

posted @ 2021-01-14 18:32  jasmine0627  阅读(421)  评论(0编辑  收藏  举报