用jmeter做接口导入文件测试,文件名称包含日期,需要动态判断昨天所在的月份,然后获取月头和月尾的日期。
1、添加前置处理器BeanShell PreProcessor
2、代码如下:
注意①jmeter打印的语句是log.info();而不是System.out.println();
②定义变量String的首字母要大写
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
String yesterday="${__timeShift(yyyyMMdd,,-P1d,,)}";//昨天, 所属月份的整月20201201-20201231
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");//格式化为年月日
//月头
Calendar beginCalendar = Calendar.getInstance();
beginCalendar.setTime(sdf.parse(yesterday));
beginCalendar.set(Calendar.DAY_OF_MONTH, beginCalendar.getActualMinimum(Calendar.DAY_OF_MONTH));
String begin = sdf.format(beginCalendar.getTime());
//月尾
Calendar calendar = Calendar.getInstance();
calendar.setTime(sdf.parse(yesterday));
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
String end =sdf.format(calendar.getTime());
log.info(begin); //打印月头时间
log.info(end); //打印月尾时间
vars.put("begin",begin); //把生成的begin提供给beanshell外部组件引用
vars.put("end",end); //把生成的end提供给beanshell外部组件引用