目的:JMeter的beanshell编写
问题:在某些查询场景中传参为前一个月的数据,JMeter获取N天前的日期/N天前的月份以供接口测试传参
解决方案:JMeter中beanshell编写简单的代码,没有现成的方法可以调用
其他:在beanshell中调用JMeter自带方法与其他地方无异,不进行阐述,请自行百度
① 直接在beanshell里面编写java代码获取
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
//和正常java程序不太一样的是没有定义类和main方法,直接是获取日期和月份的方法
//传入与当天的相差天数,返回N天前的日期
public static String calDate(int days) {
Date now = new Date();
//System.out.println(now);
Calendar cal = Calendar.getInstance();
cal.setTime(now);
cal.add(Calendar.DATE, days);
Date now_1 = cal.getTime();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");// 可以方便地修改日期格式
String nowDate = dateFormat.format(now_1);
return nowDate;
}
//传入与当天的相差天数,返回N天前的月份
public static String calMonth(int days)
{
Date now = new Date();
//System.out.println(now);
Calendar cal = Calendar.getInstance();
cal.setTime(now);
cal.add(Calendar.DATE, days);
Date now_1 = cal.getTime();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");// 可以方便地修改日期格式
String nowDate = dateFormat.format(now_1);
return nowDate;
}
//调用方法获取日期
String date = calDate(0); //获得今天的日期
String date_1 = calDate(-1); //获得昨天的日期
String date_6m = calMonth(-180); //计算180天前的月份
//在jmeter里面需要put,将内部的参数放到beanshell外均可以调用的变量
vars.put("date", date);
vars.put("date_1", date_1);
vars.put("date_6m", date_6m);
//日志显示具体的值,和system.out.println("")效果一样
log.info("date_6m:" + date_6m);
② 直接导入jar包
1)有些习惯在eclipse或者其他的编程软件先完成方法编写,再导出jar包。
2)把jar包放在计算机某个位置;
3)JMeter测试计划中添加该jar包
4)在beanshell中导入并调用即可
遇到其他的场景需要自行编写代码也是相同的方法。