在测试过程中遇到一个需求,一个抽奖接口,可能返回四种抽奖结果,一二三四等奖,没有不中奖的,对奖项设置中奖率。
要测试中奖率就要知道每个请求返回的中奖结果,并进行累加。
工具使用的jmeter,首先想到的是Beanshell,开始由于不知道怎么设置全局变量,自己定义的变量每次都被重新初始化了,后来发现jmeter有属性变量
a) props.get("key");
b) props.put("key","value");
比如我把一等奖中奖个数初始值设为0,props.put("topone","0");
然后用正则表达式获取服务端的返回值,将正则表达式提取器获取的结果做判断,如果是一等奖那么topone+1,然后再次保存到props.put("topone",topone+1)
最后获取到的props即为要获取的值。
//运行前执行初始化,初始化后要注释掉
props.put("code",0);
props.put("xj",0);
props.put("zj",0);
props.put("dj",0);
props.put("jsj",0);
//使用正则表达式提取返回值
String value = vars.get("levelName");
System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
//System.out.println("zhang:"+value);
//调试变量值获取是否正常
int x = props.get("code");
int xxj = props.get("xj");
int xdj = props.get("dj");
int xjsj = props.get("jsj");
System.out.println("x="+x);
System.out.println("xxj="+xxj);
System.out.println("xdj="+xdj);
System.out.println("xjsj="+xjsj);
//对正则表达式提取的返回值进行判断
if(value.equals("中吉")){
props.put("code",x+1);
System.out.println("======");
}
System.out.println(props.get("code"));
if(value.equals("小吉")){
props.put("xj",xxj+1);
System.out.println("======");
}
System.out.println(props.get("xj"));
if(value.equals("大吉")){
props.put("dj",xdj+1);
System.out.println("======");
}
System.out.println(props.get("dj"));
if(value.equals("吉上吉")){
props.put("jsj",xjsj+1);
System.out.println("======");
}
System.out.println(props.get("jsj"));