前提
jmeter安装OK,
fastjson包下载OK,并放入 jemterpath\lib\ext路径下
步骤
1、测试任务导入fastjson jar包
2、定义一个变量,模拟返回值
3、编写benshell脚本
4、经验总结
- 测试计划需要导入第三方包,不导入包不行。
- fastjson非jmeter自带的默认函数,因此需要导入第三方库,否则会报错。
- 调试时,要多使用log.info 和 toString(). log.info仅支持字符串类型。
- 关于数据的处理,基本分为三类:
解析的结果是字典类型的,即 {开头,用getJSONObject
解析的结果是数组类型的,即[开头,用getJSONArray
解析的结果是字符串类型的,即字符串或int,直接用get即可 - 越勇越搓,越挫越勇。慢慢调整,不要怕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"));