1.samper对象(用于前置处理器)
a.sampler (是Samper对象)
参考http://jmeter.apache.org/api/org/apache/jmeter/samplers/Sampler.html
import org.apache.jmeter.config.Arguments;
a)获取http请求的 url
String url = sampler.getPath();
b)获取http请求的body内容
Arguments arguments = sampler.getArguments(); // 调用时注意sampler小写
String body = arguments.getArgument(0).getValue();
示例代码(将请求体body转化为json/map等数据格式):
import com.alibaba.fastjson.*;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSON;
import com.tuhu.open.sdk.sign.Signer;
import java.util.Map;
//defing the privateKey for sign
private static final String PRIVATE_KEY = "${publicKey}";
String date = "${__time(,)}";
vars.put("timestamp", date);
Arguments arguments = sampler.getArguments();
Argument arg = arguments.getArgument(0);
String body = arg.getValue();
log.info("=body=****************"+ body);
//JSONObject json = JSONObject.parseObject(body);
//log.info("=json=****************"+ json);
Map map = (Map)JSON.parseObject(body);
log.info("=map=****************"+ map);
//generate the sign by class Signer which offered by developer
Signer signer = new Signer(PRIVATE_KEY);
sign = signer.sign(map, PRIVATE_KEY, "UTF-8", "RSA2");
log.info("=sign=****************"+ sign);
JSONObject parseObject = JSON.parseObject(body);
log.info("=parseObject=****************"+ parseObject);
parseObject.put("sign",sign);
String postData = parseObject.toJSONString();
//set the date into request
arg.setValue(postData);
argument的接口文档介绍:(转)
b.Jmeter beanshell
import org.apache.jmeter.samplers.*;
import org.apache.jmeter.config.*;
import com.alibaba.fastjson.*;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSON;
import com.michael.open.sdk.sign.Signer;
import java.util.Map;
import java.util.Random;
public class Random_str {
public static String RandomJianHan(int len) {
String ret = "";
for (int i = 0; i < len; i++) {
String str = null;
int hightPos, lowPos; // define high and low
Random random = new Random();
hightPos = (176 + Math.abs(random.nextInt(39))); // get the high
lowPos = (161 + Math.abs(random.nextInt(93))); // get the low
byte[] b = new byte[2];
b[0] = (new Integer(hightPos).byteValue());
b[1] = (new Integer(lowPos).byteValue());
try {
str = new String(b, "GBk"); // into chinese
} catch (UnsupportedEncodingException ex) {
ex.printStackTrace();
}
ret += str;
}
return ret;
}
public static String getRandomNumber(int length){
String str="123456789";
Random random=new Random();
StringBuffer sb=new StringBuffer();
for(int i=0;i<length;i++){
int number=random.nextInt(9);
sb.append(str.charAt(number));
}
return sb.toString();
}
}
String date = "${__time(,)}";
Random_str hanChar = new Random_str();
String type = vars.get("dataType");
if (type.equals("NAME")){
vars.put("value", hanChar.RandomJianHan(8));
}else if (type.equals("MAILBOX")){
vars.put("value", date+vars.get("value"));
}else if (type.equals("MOBILE")){
vars.put("value", hanChar.getRandomNumber(11));
}else{
vars.put("value", vars.get("value")+date);
}
//defing the privateKey for sign
private static final String PRIVATE_KEY = "${publicKey}";
vars.put("timestamp", date);
Arguments arguments = sampler.getArguments();
Argument arg = arguments.getArgument(0);
String body = arg.getValue();
log.info("=body=****************"+ body);
Map map = (Map)JSON.parseObject(body);
log.info("=map=****************"+ map);
//generate the sign by class Signer which offered by developer
Signer signer = new Signer(PRIVATE_KEY);
sign = signer.sign(map, PRIVATE_KEY, "UTF-8", "RSA2");
log.info("=sign=****************"+ sign);
JSONObject parseObject = JSON.parseObject(body);
log.info("=parseObject=****************"+ parseObject);
parseObject.put("sign",sign);
String postData = parseObject.toJSONString();
//set the date into request
arg.setValue(postData);
c.Jmeter beanshell 跨线程组传值(设置全局属性)
- put值
String str = vars.get("accountNoSetup");
props.put("accountNo",str);
- get值
vars.put("accountNo",props.get("accountNo"));