在测试过程中经常会遇到一些接口中的参数需要进行处理时间格式,比如当前时间、当前日期,当月一号,下个月一号等等,下面我们就使用Jmeter元件BeanShell 取样器调用Java代码进行处理,首先在jmeter的目录D:\apache-jmeter-5.1.1\bin下新建DateUtil.java,如下图:
代码如下:
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateUtil
{
public static String getdodyTime()
{
Date date=new Date();
Format f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String todaytime=f.format(date);
return todaytime;
}
public static String getTodyData()
{
Date date=new Date();
Format f = new SimpleDateFormat("yyyy-MM-dd");
String today=f.format(date);
return today;
}
public static String getTomorrowDate()
{
Date date=new Date();
Format f = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DAY_OF_MONTH, 1);// 今天+1天
Date tomorrow_date = c.getTime();
String tomorrow=f.format(tomorrow_date);
return tomorrow;
}
public static String getYesterdayDate()
{
Date date=new Date();
Format f = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DAY_OF_MONTH, -1);// 今天-1天
Date yesterday_date = c.getTime();
String yesterday=f.format(yesterday_date);
return yesterday;
}
public static String getTomorrowTime()
{
Date date=new Date();
Format f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DAY_OF_MONTH, 1);// 今天+1天
Date tomorrow_date = c.getTime();
String tomorrowtime=f.format(tomorrow_date);
return tomorrowtime;
}
public static String getTomorrowTimeSubtract()
{
Date date=new Date();
Format g = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar e = Calendar.getInstance();
e.setTime(date);
e.add(Calendar.DAY_OF_MONTH, -60);// 今天-60天
Date tomorrow_date_subtract = e.getTime();
String tomorrowtimesubtract=g.format(tomorrow_date_subtract);
return tomorrowtimesubtract;
}
public static String getTomorrowTimeSubtractDate()
{
Date date=new Date();
Format g = new SimpleDateFormat("yyyy-MM-dd");
Calendar e = Calendar.getInstance();
e.setTime(date);
e.add(Calendar.DAY_OF_MONTH, -60);// 今天-60天
Date tomorrow_date = e.getTime();
String tomorrowtimesubtractdate=g.format(tomorrow_date);
return tomorrowtimesubtractdate;
}
public static String getTomorrowTimeadd()
{
Date date=new Date();
Format g = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar e = Calendar.getInstance();
e.setTime(date);
e.add(Calendar.DAY_OF_MONTH, 10);// 今天+10天
Date tomorrow_date = e.getTime();
String tomorrowtimeadd=g.format(tomorrow_date);
return tomorrowtimeadd;
}
public static String getnowYear()
{
Date date=new Date();
Format year = new SimpleDateFormat("yyyy");//当前年
Calendar e = Calendar.getInstance();
e.setTime(date);
Date year_date = e.getTime();
String nowYear=year.format(year_date );
return nowYear;
}
public static String getnowMonth()
{
Date date=new Date();
Format month = new SimpleDateFormat("MM");//当前月
Calendar e = Calendar.getInstance();
e.setTime(date);
Date month_date = e.getTime();
String nowMonth=month.format(month_date);
return nowMonth;
}
public static String getDateMonth()
{
Date date=new Date();
Format month_format = new SimpleDateFormat("yyyy-MM-01");
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.DAY_OF_MONTH,0);本月第一天
Date month = cal.getTime();
String month_date=month_format.format(month);
return month_date;
}
public static String getNextDateMonth()
{
Date date=new Date();
Format month_next_format = new SimpleDateFormat("yyyy-MM-01");
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.MONDAY,1);//下个月初
Date month_next = cal.getTime();
String month_next_date=month_next_format.format(month_next);
return month_next_date;
}
public static String getDateWeek()
{
Date date=new Date();
Format week_format = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DAY_OF_MONTH,-7);//当前日期-7天
Date week = cal.getTime();
String week_date=week_format.format(week);
return week_date;
}
public static String getDay()
{
Date date=new Date();
Format day_format = new SimpleDateFormat("dd");//当前日
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.getTime();//当前日
Date day = cal.getTime();
String day_date=day_format.format(day);
return day_date;
}
}
现在我们就可以在jmeter中调用BeanShell 取样器,如下图:
接下来在BeanShell 中引用DateUtil.java,代码如下:
source(“D:\apache-jmeter-5.1.1\bin\DateUtil.java”);
变量名不太规范,不要学我哦!最后我们在接口中引入BeanShell 的变量,如下图
OK,至此BeanShell 取样器调用Java代码就结束了,谢谢