【Jmeter】使用外部java代码进行任意时间的获取

本文介绍了如何在JMeter中通过编写Java代码实现获取以当前时间为基准的任意时间,例如几小时或几天前后的时间。首先,创建一个DateUtil.java文件,然后在JMeter的BeanShell取样器中加载并使用该Java代码,从而在接口测试中灵活设置未来时间参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

jmeter自带的time函数可以很好的完成当前时间的各种格式的获取,而RandomDate函数可以获取随机日期,可以指定时间范围,然而比如有的接口的入参为一个未来的时间,如果使用RandomDate则可能会在使用时间到达后接口就会失败(当日也可以取一个几年后的时间,这样就没问题了),那么有没其他办法比如获取以今天为基准几小时前后的时间或者几天前后的时间呢?有的,此时就需要使用java代码来完成这一点,方法如下:

1、书写java代码:

书写一个DateUtil的java文件,如下:

package com.lty.apiTest.common.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateUtil {

	/** 
	 * 根据格式获取当前格式化时间 
	 * @param format 格式化方式,基础格式为yyyy-MM-dd HH:mm:ss 
	 * @return 当前时间 
	 */ 
	public static String getCurrentTimeByFormat(String format) 
	{ 
		SimpleDateFormat df = new SimpleDateFormat(format); 
	    return df.format(new Date()); 
	}
	
	/**
	 * 根据偏移量获取偏离当前小时数N小时的时间
	 * @param offset 偏移量,为整数
	 * @return
	 */
	public static Date getHourByOffset(int offset)
	{
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(new Date());
		calendar.add(Calendar.HOUR, offset);
		return calendar.getTime();
	}
	
	/**
	 * 根据偏移量获取当前时间
	 * @param offset
	 * @return
	 */
	public static Date getDateByOffset(int offset)
	{
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(new Date());
		calendar.add(Calendar.DATE, offset);
		return calendar.getTime();
	}
	
	/**
	 * 根据格式和Date获取时间
	 * @param format 格式
	 * @param date Date对象
	 * @return
	 */
	public static String getTimeByFormat(String format, Date date)
	{
		SimpleDateFormat df = new SimpleDateFormat(format); 
		return df.format(date);
	}
}

完成后将其取出,放置到某个文件夹(最好放到jmeter目录下或者用例目录下)

2、在jmeter中使用此java文件

添加一个BeanShell取样器,使用source来载入此DateUtil.java,如下:

source("E:\\software\\testcase\\DateUtil.java");

而后就可以使用DateUtil内部的代码了,如下为几个范例:

source("E:\\software\\testcase\\DateUtil.java");
//当前时间
String currentTime = String.valueOf(System.currentTimeMillis());
//两小时后的时间
String hource2After = DateUtil.getTimeByFormat("yyyy-MM-dd HH:mm:ss", DateUtil.getHourByOffset(+2));
//四小时后的时间
String hource4After = DateUtil.getTimeByFormat("yyyy-MM-dd HH:mm:ss", DateUtil.getHourByOffset(+4));
//四天前的时间
String party_apply_date = DateUtil.getTimeByFormat("yyyy-MM-dd", DateUtil.getDateByOffset(-4));
//当前日期
String current_day = DateUtil.getTimeByFormat("yyyy-MM-dd", new Date());
//四天后的日期
String prepare_date = DateUtil.getTimeByFormat("yyyy-MM-dd", DateUtil.getDateByOffset(+4));
//六天后的日期
String positive_date = DateUtil.getTimeByFormat("yyyy-MM-dd", DateUtil.getDateByOffset(+6));
//四天后的时间
String time4After = DateUtil.getTimeByFormat("yyyy-MM-dd HH:mm:ss", DateUtil.getDateByOffset(+4));
//六天后的时间
String time6After = DateUtil.getTimeByFormat("yyyy-MM-dd HH:mm:ss", DateUtil.getDateByOffset(+6));
vars.put("currentTime",currentTime);
vars.put("startTime",hource2After);
vars.put("afterTime",hource4After);
vars.put("party_apply_date",party_apply_date);
vars.put("current_day",current_day);
vars.put("prepare_date",prepare_date);
vars.put("positive_date",positive_date);
vars.put("time4After",time4After);
vars.put("time6After",time6After);

在时间代码获取到后使用vars.put(key,value)模式来将此值放入jmeter的参数值中,如此后边就可以使用譬如${hource2After}来获取到这个时间了;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值