Jmeter中常用Beanshell脚本
1.BeanShell中if语句用法
String reqpath = "";//先定义个字符参数
if("zip".equals("${filename}"))
{
reqpath = "/file/upload/link";
}
else
{
reqpath = "/file/upload";
}
vars.put("reqpath",reqpath);
2.文件下载
import java.io.*;
byte[] result = prev.getResponseData();
String file_name = "D:\\下载文件\\a.xlsx";
File file = new File(file_name);
FileOutputStream out = new FileOutputStream(file);
out.write(result);
out.close();
3.提取返回响应中json中的值
//首先要引用json.jar包
import com.alibaba.fastjson.*;
//String response = prev.getResponseDataAsString();//获取响应信息
String response = "{\"code\":200,\"msg\":\"操作成功\",\"data\":[{\"boundaryLineGltfList\":[\"https://baidu.com\",\"https://baidu.com\",\"https://baidu.com\"]}]}";
JSONObject jsonObject = JSONObject.parseObject(response);//Sting字符串转换成json串
JSONArray boundaryLineGltfList = JSONPath.eval(jsonObject,"$.data[0].boundaryLineGltfList");
String len = boundaryLineGltfList.size().toString();//获取boundaryLineGltfList数组的长度
int i = 1;
String path = boundaryLineGltfList.get(i).toString();//获取boundaryLineGltfList数组中某个值
vars.put("boundaryLineGltfList",path);
4.提取返回响应中json中某个参数的值放到一个字符串中
import com.alibaba.fastjson.*;
String response = prev.getResponseDataAsString();
JSONObject jsonObject = JSONObject.parseObject(response);//Sting字符串转换成json串
JSONArray data = JSONPath.eval(jsonObject,"$.data");
int x = data.size();
String ifcTypeNametotal = "";
String ifcTypeNamegroup = "";
String ifcTypeName = "";
for (int i=0;i<x;i++){
ifcTypeNamegroup = data.get(i).toString();
JSONObject ifcTypeNameObject = JSONObject.parseObject(ifcTypeNamegroup);
ifcTypeName = JSONPath.eval(ifcTypeNameObject,"$.ifcTypeName");
if("".equals(ifcTypeNametotal))
{
ifcTypeNametotal = ifcTypeNametotal+ifcTypeName;
}
else
{
ifcTypeNametotal = ifcTypeNametotal+","+ifcTypeName;
}
}
vars.put("ifcTypeNametotal",ifcTypeNametotal);
5.import org.json.*; 也可以 import org.json.JSONObject;、import org.json.JSONAarry;主要是处理这两种类型的数据,Json对象和Json数组
import org.json.*;
String response_data = prev.getResponseDataAsString(); //获取请求返回值。注意此处只能获取到String类型;
log.info(response_data);
JSONObject data_obj = new JSONObject(response_data); //将String类型的返回值构造成JSONObject对象,才可使用Java对象的方法对其进行操作;
String StrData = data_obj.get("data").toString(); //获取作为下一个请求post的参数值data;
log.info(StrData); //Log中显示的字段顺序会与“response_data”中的字段顺序有差异,JSON串的正确与否无关字段顺序;
JSONObject JsonData = new JSONObject(StrData); //将获取到的“data”字符串构造成JSON对象;
JsonData.put("issueHandleType", "CLOSE"); //更新issueHandleType的json值;
JsonData.put("solution", "2017_解决方案_性能测试");
JsonData.put("status", "CLOSED");
JsonData.put("handleType", "CLOSE");
JsonData.put("complaintTypeSecondCode", "URGE"); //异常类型;
JsonData.put("complaintTypeSecondName", "催件");
JsonData.put("lastUpdateTime", "${timestamp}");
JsonData.put("lastUpdator", "${UserName}");
JsonData.put("lastUpdatorName", "${UserName}");
String NewData = JsonData.toString(); //将JSON对象保存为String类型,Jmeter中的请求的参数均以字符串的形式传递;
vars.put("NewStrData",NewData);
log.info(NewData);
//import org.json.*;import org.json.JSONObject;
import org.json.JSONArray;
try {
String response_data = prev.getResponseDataAsString(); //获取请求返回值。注意此处只能获取到String类型;
JSONObject data_obj = new JSONObject(response_data); //将String类型的返回值构造成JSONObject对象;
JSONArray data_array = data_obj.getJSONArray("data"); //data为数组
int len = data_array.length(); //获取data数组的长度
String strlen = Integer.toString(len);
vars.put("MessageNum",strlen);
//log.info(strlen);
int i = 0;
for(;i < len;++i)
{
JSONObject jsonTemp = (JSONObject)data_array.getJSONObject(i); //获取 data[ i ] 数组对象;
switch(i)
{
case 0:
vars.put("uuid_1", jsonTemp.getString("uuid"));
vars.put("conversationId_1", jsonTemp.getString("id"));
break;
case 1:
vars.put("uuid_2", jsonTemp.getString("uuid"));
vars.put("conversationId_2", jsonTemp.getString("id"));
break;
//..................................此处省去7次处理
case 10:
vars.put("uuid_11", jsonTemp.getString("uuid"));
vars.put("conversationId_11", jsonTemp.getString("id"));
break;
default:
break;
}
}
}
catch (Throwable ex) {
log.error("Failed in Beanshell", ex);
throw ex;
}