当前位置: 首页 > news >正文

jmeter通过beanshell中脚本实现随机获取某天(“yyyy-MM-dd HH:mm:ss“)前1周,一个月,一个季度,半年的时间0点

在接口测试中,请求参数中涉及时间的参数可能不是固定死的,因此jmeter想通过beanshell中脚本实现随机获取某天(statusTimeEnd(“yyyy-MM-dd HH:mm:ss”))前1周,一个月,一个季度,半年的时间0点,其中statusTimeEnd 的值在用户参数中已配置。

参考 JMeter 性能测试实战的方法 :http://literalink.top/resource/detail/7185031586667040768,

代码如下:

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Random;// 设定日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 获取 'statusTimeEnd' 的值
String statusTimeEndStr = vars.get("statusTimeEnd");
Calendar statusTimeEnd = Calendar.getInstance();
statusTimeEnd.setTime(sdf.parse(statusTimeEndStr));// 生成一个随机日期
Random rand = new Random();
long oneMonthMillis = 30L * 24 * 60 * 60 * 1000; // 一个大约为一个月的毫秒数
long randomTimeMillis = (long) (rand.nextDouble() * oneMonthMillis);
Calendar randomDate = Calendar.getInstance();
randomDate.setTimeInMillis(statusTimeEnd.getTimeInMillis() - randomTimeMillis);// 计算前1天
Calendar calDayBefore = (Calendar) randomDate.clone();
calDayBefore.add(Calendar.DAY_OF_MONTH, -1);
calDayBefore.set(Calendar.HOUR_OF_DAY, 0);
calDayBefore.set(Calendar.MINUTE, 0);
calDayBefore.set(Calendar.SECOND, 0);
calDayBefore.set(Calendar.MILLISECOND, 0);
String dayBeforeStr = sdf.format(calDayBefore.getTime());
vars.put("dayBefore", dayBeforeStr);// 计算前1周
Calendar calWeekBefore = (Calendar) randomDate.clone();
calWeekBefore.add(Calendar.WEEK_OF_YEAR, -1);
calWeekBefore.set(Calendar.HOUR_OF_DAY, 0);
calWeekBefore.set(Calendar.MINUTE, 0);
calWeekBefore.set(Calendar.SECOND, 0);
calWeekBefore.set(Calendar.MILLISECOND, 0);
String weekBeforeStr = sdf.format(calWeekBefore.getTime());
vars.put("weekBefore", weekBeforeStr);// 计算前1个月
Calendar calMonthBefore = (Calendar) randomDate.clone();
calMonthBefore.add(Calendar.MONTH, -1);
calMonthBefore.set(Calendar.HOUR_OF_DAY, 0);
calMonthBefore.set(Calendar.MINUTE, 0);
calMonthBefore.set(Calendar.SECOND, 0);
calMonthBefore.set(Calendar.MILLISECOND, 0);
String monthBeforeStr = sdf.format(calMonthBefore.getTime());
vars.put("monthBefore", monthBeforeStr);// 计算前3个月
Calendar calThreeMonthsBefore = (Calendar) randomDate.clone();
calThreeMonthsBefore.add(Calendar.MONTH, -3);
calThreeMonthsBefore.set(Calendar.HOUR_OF_DAY, 0);
calThreeMonthsBefore.set(Calendar.MINUTE, 0);
calThreeMonthsBefore.set(Calendar.SECOND, 0);
calThreeMonthsBefore.set(Calendar.MILLISECOND, 0);
String threeMonthsBeforeStr = sdf.format(calThreeMonthsBefore.getTime());
vars.put("threeMonthsBefore", threeMonthsBeforeStr);// 计算前6个月
Calendar calSixMonthsBefore = (Calendar) randomDate.clone();
calSixMonthsBefore.add(Calendar.MONTH, -6);
calSixMonthsBefore.set(Calendar.HOUR_OF_DAY, 0);
calSixMonthsBefore.set(Calendar.MINUTE, 0);
calSixMonthsBefore.set(Calendar.SECOND, 0);
calSixMonthsBefore.set(Calendar.MILLISECOND, 0);
String sixMonthsBeforeStr = sdf.format(calSixMonthsBefore.getTime());
vars.put("sixMonthsBefore", sixMonthsBeforeStr);// 随机选择一个变量
String[] keys = {"dayBefore", "weekBefore", "monthBefore", "threeMonthsBefore", "sixMonthsBefore"};
int randomIndex = rand.nextInt(keys.length);
String randomKey = keys[randomIndex];
String randomDateStr = vars.get(randomKey);log.info("随机选择的日期变量: " + randomDateStr);
vars.put("randomDate", randomDateStr);

http://www.mrgr.cn/news/23559.html

相关文章:

  • 拾音器厂家的发展历程与技术创新
  • Conda安装R环境并在Jupyter Lab中运行
  • 数据分析案例-视频游戏销量数据集可视分析
  • Grid布局常用属性梳理
  • sqlalchemy FastAPI 前端实现数据库增删改查
  • STM32H7 如何使用ITCM DTCM?
  • 微客云霸王餐系统——餐饮霸王餐大师推荐
  • vue3 内置特殊元素<slot> 与 插槽 Slots
  • 解锁生活密码,AI答案之书解决复杂难题
  • stm32 Modbus-RTU Master 主机程序
  • --- 数据结构 二叉树 --- java
  • 广州自闭症康复儿童医院——打破自闭症的困囿,开启儿童无限可能
  • 前k个高频元素
  • 基于vue框架的城市交通管理系统的设计与实现9fcck(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • CSP-J 算法基础 排序算法的基本概念
  • 如何选择一款合适的高压功率放大器?
  • 【区块链通用服务平台及组件】浪潮云链区块链平台 | FISCO BCOS应用案例
  • SpringBoot 统⼀功能处理
  • Lua可变参数中的nil值处理
  • 【网上商城项目结构】