目的: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中導入並調用即可
遇到其他的場景需要自行編寫代碼也是相同的方法。