颠覆你的Python实践接口测试Jmeter

jmeter 获取jdbc request 返回的多行数据

2017-10-23  本文已影响47人  乘风破浪的姐姐

场景:

jdbc request 查询结果为多行数据。获取这些数据并返回

1、建立JDBC Connection Configuration 连接

2、创建jdbc request,查询sql如下:

SELECT  'VEHICLE_SUB_MODEL_ID='|| '"' ||  t.VEHICLE_SUB_MODEL_ID ||'"'  FROM t_md_vehicle_model t WHERE t.TIMING_ID in (${tidStr})  AND ((t.BEGIN_YEAR <= ${year} and t.END_YEAR is null) or (t.BEGIN_YEAR is null and t.END_YEAR >= ${year}) or (t.BEGIN_YEAR <= ${year} and t.END_YEAR >= ${year}))

注1:上述sql中,'VEHICLE_SUB_MODEL_ID='|| '"' ||  t.VEHICLE_SUB_MODEL_ID ||'"' ,返回的结果,格式如下:

jdbc request 1

注2:如果直接这样:SELECT  t.VEHICLE_SUB_MODEL_ID  FROM t_md_vehicle_model t WHERE t.TIMING_ID in (${tidStr})  ,返回的结果,格式如下:

jdbc request 2

3、好了,上面已经得到查询结果,接下来需要将响应的数据中的VEHICLE_SUB_MODEL_ID  提取出来。

新增正则表达式提取器,设置如下:

其中引用名称model,后续传参要用到,因为上面的jdbc request响应数据已经被格式化,所以正则表达式直接用 字段名="(.+?)"的格式

正则表达式1

如果采用注2中的sql进行查询,正则表达式的格式需要这样:字段名\n([^"]+)

正则表达式2

4、上一步将VEHICLE_SUB_MODEL_ID  提取后,察看结果树中 数据的个数为24个

察看结果树

通过获取model的个数,分别提取每一个modelId.

新增一个BeanShell PostProcessor,先获取model的个数,然后通过for循环 ,拼接model_n,加入到list中

将list转化成字符串,并输出

BeanShell PostProcessor

String  model_num =vars.get("model_matchNr");

int num = Integer.parseInt(model_num);

log.info("车型ID个数:"+num);

List list = new ArrayList();

for(int i=1;i<=num;i++){

String ss ="model_"+i ;

String modelId = vars.get(ss);

//log.info("model is :"+ ss);

log.info("model is :"+ modelId);

list.add(modelId);

}

log.info("可用的款型个数为:"+list.size());

StringBuilder csvBuilder = new StringBuilder();

for(String i:list){

csvBuilder.append(i);

csvBuilder.append(",");

}

String csv = csvBuilder.toString();    //保存VMI组件结果,供后续比较使用

csv = csv.substring(0,csv.length()-1);

vars.put("VMI2Result",csv);

log.info("可用款型分别为:"+vars.get("VMI2Result")+"\n");

上一篇下一篇

猜你喜欢

热点阅读