您的位置:首页 > 运维架构 > Shell

Jmeter的beanshell应该怎么写?

2017-08-02 17:18 281 查看
目的: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中导入并调用即可



遇到其他的场景需要自行编写代码也是相同的方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: