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

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

时间:2024-09-10 13:22:51浏览次数:12  
标签:set String vars mm dd randomDate statusTimeEnd ss Calendar

在接口测试中,请求参数中涉及时间的参数可能不是固定死的,因此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);

标签:set,String,vars,mm,dd,randomDate,statusTimeEnd,ss,Calendar
From: https://blog.csdn.net/weixin_43946945/article/details/142096204

相关文章

  • KISS/DRY/YANGI/SOLID 等程序设计原则 第一类代码是炫技,第二类代码才叫专业。
    小结:SOLID出自UncleBob著名的《敏捷软件开发》一书,是五个重要软件设计原则的缩写。SOLID-SRPSingleResponsibilityPrinciple单一职责原则Aclassshouldhaveone,andonlyone,reasontochange.SOLID中最简单的原则,每个class或者function只做一件事情。Open/C......
  • 828华为云征文|华为云Flexus X实例全面杜绝DDoS、XSS、CSRF与SQL注入攻击,为企业部署无
    华为云近期盛大开启的828B2B企业节,为追求极致算力性能的企业用户带来了前所未有的优惠盛宴。特别是FlexusX实例,其强大的计算能力在此活动期间以超值价格呈现,无疑是自建高性能MySQL数据库、Redis缓存系统以及Nginx服务器等关键服务的理想选择。对于渴望提升业务处理效率与......
  • 使用公钥通过ssh通道连接MYSQL数据库报错(server sent: publickey)
    使用公钥通过ssh连接MYSQL数据库报错Disconnected:Nosupportedauthenticationmethodsavailable(serversent:publickey)1、通过命令行查看服务器ssh配置文件sudovim/etc/ssh/sshd_config2、查看PubkeyAuthentication是否启用,PubkeyAuthenticationyes,表示服务......
  • 【整理】【java开发】JavaWeb之JSP、Cookie、Session(一)
    一、JSP介绍及原理1.1JSP简介1.2JSP简单入门1.3JSP原理介绍二、JSP脚本2.1JSP脚本形式2.2JSPEL表达式2.3JSPJSTL标签三、会话跟踪技术3.1Cookie3.2Session原创0xNvyao安全随笔声明请勿利用本公众号文章内的相关......
  • 基于java ssm vue mysql大学校医院信息管理系统毕业设计项目实战分享
    前言......
  • Flask session cookie 失效在Safari中的解决方法
    Flask会默认使用客户端会话管理,数据存储在浏览器的cookie中。这种方法通常在各种浏览器中工作良好,但有时可能会在Safari中遇到sessioncookie失效的问题,特别是使用了iOS或macOS上的Safari。这个问题常见的原因是Safari中的隐私设置,尤其是涉及到“防止跨站追踪”和第......
  • 计算机毕业设计必看必学!!11819 ssm球鞋资讯交流平台,原创定制程序, java、PHP、python
    摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,球鞋资讯交流平台当然也不能排除在外。球鞋资讯交流平台是以实际运用为开发背景,运用软件工程原理和开发方法,采用 SSM技术构建的一个管理平台。整个开发过程......
  • SSH远程工具推荐
    SSH(SecureShell)是一种广泛使用的网络协议,用于在不安全的网络中安全地进行远程登录和其他网络服务。随着远程工作和服务器管理的普及,选择一个合适的SSH客户端变得尤为重要。以下是一些当前市场上受欢迎的SSH远程工具,它们以功能、用户界面和跨平台支持等方面的优势而受到推荐。......
  • Taro 小程序父组件基于Class如何拿到子组件基于Hooks的实例对象
    如果父组件不是基于Hooks写法(类组件),而子组件是基于Hooks写法(函数组件),你依然可以通过ref访问子组件中的方法或状态。为此,你需要使用forwardRef和useImperativeHandle在子组件中自定义要暴露的内容。具体步骤在子组件中使用forwardRef将ref传递给它。在子组件中使......
  • ss(socket statistics)工具的使用方法
    目录基本用法显示特定类型的信息指定显示的套接字状态输出格式化查询特定连接或地址实例注意事项ss(socketstatistics)工具是一个用于查看网络连接和socket统计数据的强大命令行工具。它比传统的netstat更快更高效,因为它不需要等待内核收集信息。ss可以提供关于套接字的状态、错......