Jmeter的官方提供的函数挺好用的,但是往往这些函数并不能满足我们所有的需要。所以,我们需要编写自己的扩展函数,下面以获取当前(或者向前,向后)的时间为例。
1、首先编写我们的java类,如具体代码如下:
package com.ste.ruink.timetool;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TimeConvert {
/*
* 获取时间,当前时间往前(后)多少秒,flag为前后标识符(pre-前,later-后,其他值时默认为当前)
* seconds为间隔时间多少秒,format为日期格式,默认为yyyy-MM-dd HH:mm:ss
*/
public static String getTime(String flag,long sec,String format){
//获取当前时间戳
long timestamp = System.currentTimeMillis();
long finaltime;
if(flag=="pre"){
finaltime = timestamp - sec*1000;
}else if(flag=="later"){
finaltime = timestamp + sec*1000;
}else{
finaltime = timestamp;
}
//判断format是否有值
if(format.equals(null)||format==""){
format="yyyy-MM-dd HH:mm:ss";
}
String timestr = String.valueOf(finaltime);
String getdate = stampToDate(timestr,format);
return getdate;
}
/*
* 将时间戳转换为时间
*/
public static String stampToDate(String s,String format){
String res;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
long lt = new Long(s);
Date date = new Date(lt);
res = simpleDateFormat.format(date);
return res;
}
/*
* 测试代码
*/
/*
public static void main(String[] args) {
System.out.print(getTime("",60,""));
}*/
}
2、使用eclipse把java导出成jar包,如timetool.jar。(导出jar包:选中要导出的java,然后右击鼠标,依次选择Export->Java->JAR file,然后在界面中填写导出的路径,点击Finish按钮完成导出)
3、Jmeter 测试计划底部的library找到timetool.jar,导入进去。
4、在Jmeter测试计划下新建线程组,然后在线程组下添加BeanShell Sampler(线程组->添加->Sampler->BeanShell Sampler)
5、调用脚本,如在BeanShell Sampler中的script下添加:
import com.ste.ruink.timetool.TimeConvert; //标明类路径
String time = TimeConvert.getTime("",0,""); //调用类中getTime方法
return time; //返回获取到的时间
6、在线程组中添加监听器“察看结果树”。然后再点击执行,这时神奇的事情出现了,我们获取到了当前的时间。
最后附上官方的函数帮助文档地址:http://jmeter.apache.org/usermanual/functions.htm