Java脚本:获取距离当前日期接近的一个工作日
今天为大家带来的是一段返回距离当前日期最近的一个工作日的java脚本。
背景介绍:为什么要写这样的一个脚本?
这里有2个问题:为什么要写这个脚本?为什么要用java去写?
通过之前的文章介绍,大家应该知道,我们在做自动化的时候,选用的是Metersphere平台,考虑到易用性和维护成本,我会考虑将一些扩展脚本以jar包的形式进行提供。
之所以要写这样一个脚本,是因为在做自动化的时候,有的场景有需要。
大家都知道,在证券行业的话,周末一般的股票是收盘状态,那肯定有些接口就查不到数据。为了提升接口自动化运行的成功率和稳定性,要设法保证用例在任何时候都能运行,因此,在设计case的时候,有些参数不能直接写死,不然过几天可能会出现断言失败的情况。去写一个获取距离当天比较接近的交易日就可以解决部分用例传参的问题。
当然,这里先采取简单一点的办法:直接获取比较接近的一个工作日,暂时不考虑工作日休市导致部分接口查不到数据的情况,如果遇到的话,后面再去考虑进行优化。
脚本实现
先写一个根据指定日期获取是星期几的方法:
-
/**
-
* @param Date date
-
* @return 传一个日期对象,返回是星期日
-
*/
-
public static int getWeekOfDate(Date date) {
-
-
-
Calendar cal = Calendar.getInstance();
-
cal.setTime(date);
-
int week = cal.get(Calendar.DAY_OF_WEEK) - 1;
-
if (week == 0) {
-
week = 7;
-
}
-
return week;
-
-
-
}
再写一个根据当天是否是周末,获取最近工作日的方法:(这里的接近只考虑已经过去的日期,不考虑未来的日期,即周末最接近的工作日为本周五对应的日期)
-
/**
-
* @return 返回最近的一个工作日,如果是周六或者周日,则返回本周五对应的日期
-
*/
-
public static String getCurrentRecentlyTradableDate() {
-
Date date = new Date(System.currentTimeMillis());
-
int week = getWeekOfDate(date);
-
if (week == 6) {
-
date = new Date(System.currentTimeMillis() - 24 * 3600 * 1000);
-
} else if (week == 7) {
-
date = new Date(System.currentTimeMillis() - 24 * 3600 * 1000 * 2);
-
}
-
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
-
-
-
String recentlyDate = formatter.format(date);
-
return recentlyDate;
-
}
运行的结果:
以上呢只是一个脚本的小脚本,可能还会存在bug,最主要的是希望大家学会一个解决问题的思路,在设计用例的时候,要考虑用例是否可以在任何时候都能被执行且断言成功。
在Metersphere平台中使用脚本
我一般都喜欢把自己扩展的方法打成jar包上传到平台,然后再用的时候直接调用就行:
脚本调试运行结果:
ps:脚本写的比较少,有写的不好的地方,欢迎各位大佬指点一二。有更好的建议也可以去知识星球留言。
文章来源: xiaobotester.blog.csdn.net,作者:小博测试成长之路,版权归原作者所有,如需转载,请联系作者。
原文链接:xiaobotester.blog.csdn.net/article/details/125476786
- 点赞
- 收藏
- 关注作者
评论(0)