jmeter多个参数中取变量值

举报
royal_lzj 发表于 2017/11/25 16:20:20 2017/11/25
【摘要】 在查询的消息体内取变量的值,作为入参使用,如果返回的查询消息一个参数能唯一标识出来,那么直接取就行了,如果返回的参数不能唯一标识出来,那么就需要预处理了,本文对这两种情况进行说明举例。一、能唯一标识的参数取值二、当变量不能唯一标识,就不好用正则表达式进行取值,那么需要用到预置条件BeanShell PostProcesserimport org.json.simple.JSONValue; //

在查询的消息体内取变量的值,作为入参使用,如果返回的查询消息一个参数能唯一标识出来,那么直接取就行了,如果返回的参数不能唯一标识出来,那么就需要预处理了,本文对这两种情况进行说明举例。

一、能唯一标识的参数取值

image.png

image.png

二、当变量不能唯一标识,就不好用正则表达式进行取值,那么需要用到预置条件BeanShell PostProcesser

image.png

image.png

import org.json.simple.JSONValue;  //格式转化

import org.json.simple.JSONArray;   //格式转化

import org.json.simple.JSONObject;  //格式转化

 

String jsonVars= prev.getResponseDataAsString();  //返回变量转成文本格式赋值给变量

Object obj=JSONValue.parse(jsonVars);

JSONArray jsonArray = (JSONArray)obj;

JSONObject jsonObject = (JSONObject)jsonArray.get(jsonArray.size()-1);  //矩阵中关键参数的个数

int len=jsonArray.size();

for (int i=0; i < len; i++){

       JSONObject jsonObject=(JSONObject)jsonArray.get(i);

       if(jsonObject.get("serviceName").toString().equals("用户充值"))   //满足取值条件,等于“用户充值

       {

              log.info(jsonObject.get("serviceName"));

              vars.put("betaservice_id",jsonObject.get("betaServiceID"));

              vars.put("betaactivity_id",jsonObject.get("betaActivityID"));

              log.info("betaservice_id: "+vars.get("betaservice_id"));

              log.info("betaactivity_id: "+vars.get("betaactivity_id"));

       }

}

 

三、多层中怎么取参数值,比方说在安全组中去安全组id

import org.json.simple.JSONValue;

import org.json.simple.JSONArray;

import org.json.simple.JSONObject;

 

 

String jsonSubnets= prev.getResponseDataAsString();

Object obj=JSONValue.parse(jsonSubnets);

JSONObject jsonObject = (JSONObject)obj;

JSONArray jsonArray = (JSONArray)jsonObject.get("security_groups");

vars.putObject("sgs",jsonArray);

vars.put("sg_count",Integer.toString(jsonArray.size()));

 

int len=jsonArray.size();

vars.put("isSg","false");

for(int i=0; i <len; i++)

{

       JSONObject jsonObject=(JSONObject)jsonArray.get(i);

       if(jsonObject.get("vpc_id").toString().equals(vars.get("vpc_id")))

       {

              log.info(jsonObject.get("vpc_id"));

              vars.put("sg_id",jsonObject.get("id").toString());

              vars.put("isSg","true");

       }

}

查询安全组返回的消息内容

{"security_groups":[{"id":"3583a3f8-25c1-4dde-b1d5-baf699fd1be9","name":"default","vpc_id":"default","security_group_rules":[{"direction":"ingress","ethertype":"IPv4","id":"aabeeb56-eb05-46d7-bb0a-a9f46fccdaaa","remote_group_id":"3583a3f8-25c1-4dde-b1d5-baf699fd1be9","security_group_id":"3583a3f8-25c1-4dde-b1d5-baf699fd1be9"},{"direction":"egress","ethertype":"IPv4","id":"d2c3db7c-b45b-4236-8630-88988b039ca8","security_group_id":"3583a3f8-25c1-4dde-b1d5-baf699fd1be9"},{"direction":"ingress","ethertype":"IPv6","id":"06d9fb57-4505-4c01-b75f-1a6975063a4e","remote_group_id":"3583a3f8-25c1-4dde-b1d5-baf699fd1be9","security_group_id":"3583a3f8-25c1-4dde-b1d5-baf699fd1be9"},{"direction":"egress","ethertype":"IPv6","id":"0366b761-8b46-44ba-9892-0b0011d428d3","security_group_id":"3583a3f8-25c1-4dde-b1d5-baf699fd1be9"}]},{"id":"c8a6b4b8-3257-4e9f-9966-63278a8c2660","name":"default","vpc_id":"fafc90e1-99ac-4e31-9b3a-87d7a007ff2d","security_group_rules":[{"direction":"egress","ethertype":"IPv4","id":"d33b699a-0d8b-4ff3-a12c-ec6c0d6e410a","security_group_id":"c8a6b4b8-3257-4e9f-9966-63278a8c2660"},{"direction":"ingress","ethertype":"IPv4","id":"d0a38e0c-689b-446a-a3bc-8252386870e4","remote_group_id":"c8a6b4b8-3257-4e9f-9966-63278a8c2660","security_group_id":"c8a6b4b8-3257-4e9f-9966-63278a8c2660"}]}]}



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。