首页 > 技术文章 > BeanShell Processor_使用Java处理脚本

xpp142857 2017-08-16 15:44 原文

 版权声明:本文为博主原创文章,未经博主允许不得转载。


【try-catch】

建议使用Try----Catch块,这样Java语句出现问题时,日志更清晰;

try {
          //java代码
}
catch (Throwable ex) {
    log.error("something wrong in BeanShell PostProcessor", ex);
    throw ex;
}

【获取当前年月日时分秒毫秒】

如下示例:获取当前年月日时分秒毫秒并构造成形如“2017-08-16T15:35:28.456Z”的形式;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Calendar;

Calendar cal = Calendar.getInstance(); 

int YY = cal.get(Calendar.YEAR); 
int MM = cal.get(Calendar.MONTH) + 1; 
int DD = cal.get(Calendar.DATE); 
int HH = cal.get(Calendar.HOUR_OF_DAY); 
int MM = cal.get(Calendar.MINUTE); 
int SS = cal.get(Calendar.SECOND); 
int MI = cal.get(Calendar.MILLISECOND); 

vars.put("NowDate",DD+"T"+HH+":"+MM+":"+SS+"."+MI);  //构造成请求中所需的时间格式

【对参数值进行数学运算】

如下示例:是一个对话脚本的片段,IF条件控制器使用“${__javaScript("${MessageNum}">0)}”作为条件,每发送一条消息,MessageNum -1,共发送10次后结束,下面使用BeanShell  后置处理器,在发送消息的请求后使用BeanShell 后置处理器MessageNum进行处理;

使用到的Java语句:

 int tmpMessageNum = Integer.parseInt(StringValue);   //string到int

 String MessageNum = Integer.toString(tmpMessageNum);   //int到string

try {
 String tmp = vars.get("MessageNum");        //获取当前MessageNum值

 int tmpMessageNum = Integer.parseInt(tmp); //string到int //如右语句在Jmeter中使用报错,未解---Integer.valueOf(tmp).intValue(); 

 tmpMessageNum = tmpMessageNum - 1;          //处理完一条则剩余处理的条数少一条

 String MessageNum = Integer.toString(tmpMessageNum); //int到string
 //log.info(MessageNum);

 vars.put("MessageNum",MessageNum);
}
catch (Throwable ex) {
    log.error("something wrong", ex);
    throw ex;
}

推荐阅读