【Jmeter】利用benshell对响应数据二次处理,以便模拟后续接口的随机传参(模拟客户随机操作)

前提

jmeter安装OK,
fastjson包下载OK,并放入 jemterpath\lib\ext路径下

步骤

1、测试任务导入fastjson jar包

在这里插入图片描述

2、定义一个变量,模拟返回值

在这里插入图片描述

3、编写benshell脚本

在这里插入图片描述

4、经验总结

  1. 测试计划需要导入第三方包,不导入包不行。
  2. fastjson非jmeter自带的默认函数,因此需要导入第三方库,否则会报错。
  3. 调试时,要多使用log.info 和 toString(). log.info仅支持字符串类型。
  4. 关于数据的处理,基本分为三类:
    解析的结果是字典类型的,即 {开头,用getJSONObject
    解析的结果是数组类型的,即[开头,用getJSONArray
    解析的结果是字符串类型的,即字符串或int,直接用get即可
  5. 越勇越搓,越挫越勇。慢慢调整,不要怕low,根据自己想要的结果,一层一层解析,一层一层拼,后续再优化代码布局。

5、代码示例

import com.alibaba.fastjson.*;
import java.util.Random;

String a=vars.get("result");
public static ArrayList line_code_list(String json_text)
{
   log.info("==============初始值:"+json_text);
   JSONObject data = JSONObject.parseObject(json_text).getJSONObject("data");   //将String字符串转为json对象,并获取data,{开头用getJSONObject
   JSONArray items = data.getJSONArray("items");   //获取$.data.items,[开头用getJSONArray
   ArrayList result=new ArrayList();
   Random rand = new Random();
   int randomid=0;
   for (int i=0; i<items.size(); i++){
   		JSONObject currentitem = items.get(i);
   		//String currentitem1 = currentitem.toString();
   		//log.info("==============第"+(i+1).toString()+"个题目的Items为:"+currentitem1);
   		JSONArray options = currentitem.getJSONArray("options");
   		randomid=rand.nextInt(3); //使用java,而不是默认的,因为如果是jemeter默认的,三次循环会一直一样
   		JSONObject randomOption = options.get(randomid);
   		String randomOption1=randomOption.toString();
   		log.info("==============第"+(i+1).toString()+"个题目的Items的第"+(randomid+1).toString()+"个选项的option为:"+randomOption1);
   		String randomOptionID=randomOption.get("optionId").toString();  // 直接最终结果开头,用get
   		//log.info("==============第"+(i+1).toString()+"个题目的Items的第"+(randomid+1).toString()+"个选项的option为:"+randomOptionID);
   		result.add(randomOptionID);
   	}
   return result;
}
randomResult1=line_code_list(a);
randomResult2 = randomResult1.toString() ;
//log.info("=========执行后"+randomResult2);
vars.put("randomResult",randomResult2);  
log.info("最终版本结果List:"+vars.get("randomResult"));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值