我是靠谱客的博主 健忘小丸子,最近开发中收集的这篇文章主要介绍【Jmeter】使用外部java代码进行任意时间的获取,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言:

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}来获取到这个时间了;

最后

以上就是健忘小丸子为你收集整理的【Jmeter】使用外部java代码进行任意时间的获取的全部内容,希望文章能够帮你解决【Jmeter】使用外部java代码进行任意时间的获取所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部