【软件测试基础知识】利用Jmeter获取当前一周内的所有日期

发布 : 软件测试培训      来源:软件测试干货资料

2021-05-19 11:07:14

一、应用场景

接口测试中,有时候我们需要需要获取当前系统时间,比如当前是2020年12月24日。或者需要获取某个特定时间段的所有日期,比如当前一周内的所有日期,周一是2020年12月21日,周二是2020年12月22日...,周日是2020年12月27日。假如我们的接口测试工具使用的是Jmeter,我们需要Jmeter在调用接口发送请求的时候,能够提取到当前所需要的时间日期。

二、解决方案

1、使用Jmeter内置的两个时间函数来获取和处理时间

1.1 __time函数

__time函数可以返回指定格式的当前系统时间

调用格式:${__time(Format, variableName)}

参数说明:

(1)Format:时间格式。例如写成:y年-M月-d日,则返回:XXXX年-XX月-XX日。

(2)variableName:存放time函数返回结果值的变量名称,可选。例如写成:num。则${num}的值就是当前的系统时间。

1.2 __timeShift函数

和__time函数类似,区别是它可以返回按指定时间单位和时间数量偏移后的日期值。注:本函数在Jmeter3.3版本之后才有。

调用格式:${__timeShift(Format, DateToShift, valueToShift, LocaleToUseForFormat, variableName)}

参数说明:

(1)Format:时间格式。例如写成:y年-M月-d日,则返回:XXXX年-XX月-XX日。

(2)DateToShift 这里填写基于哪一个日期进行计算新的日期。类型为日期(时间)值,格式同Format参数匹配。如果不匹配、未提供该参数值,则默认使用当前日期。偏移是基于该日期(时间)的。参数可选

(3)valueToShift 指要偏移的秒数、分钟数、小时数、天数。参数可选

书写语法参考:https://docs.oracle.com/javase/8/docs/api/java/time/Duration.html#parse-java.lang.CharSequence-

(4)LocaleToUseForFormat 表示日期(时间)的语言环境,即用于格式化日期(时间)的语言. 语言代码必须小写。国家代码必须大写。分隔符必须为下划线。比如en_EN。参数可选,如果未提供,则模式使用ApacheJMeter 的locale.

书写语法参考: http://www.oracle.com/technetwork/java/javase/javase7locales-334809.html

(5)variableName 用于存放time函数返回结果值的变量名称,参数可选

2、结合java脚本,使用JMeter内置的两个时间函数来获取和处理时间

2.1 编写一个java脚本,获取本周内的周一日期和周日日期:

代码如下:

${__javaScript((new Date()).getFullYear()+&#39;-&#39;+ ((new Date()).getMonth()+1<10?"0"+((new Date()).getMonth()+1):((new Date()).getMonth()+1)) + &#39;-&#39; + (((new Date()).getDate()<10?"0"+(new Date()).getDate():(new Date()).getDate())-((new Date()).getDay()==0?7:(new Date()).getDay())+1),startMonday)};

${startMonday}; //本周开始时间,也就是周一

${__javaScript((new Date()).getFullYear()+&#39;-&#39;+ ((new Date()).getMonth()+1<10?"0"+((new Date()).getMonth()+1):((new Date()).getMonth()+1)) + &#39;-&#39; + (((new Date()).getDate()<10?"0"+(new Date()).getDate():(new Date()).getDate())+6-((new Date()).getDay()==0?7:(new Date()).getDay())+1),endSunday)};

${endSunday}; //本周结束时间,也就是周日

${__time(u,num)}; //今天是本周的第几天

2.2 在获取周一周日时间的基础上,对日期进行加减:

代码如下:

${startMonday}; //本周周一

${__timeShift(y-M-d,${startMonday},P1D,,week02)}; //本周周二

${__timeShift(y-M-d,${startMonday},P2D,,week03)}; //本周周三

${__timeShift(y-M-d,${startMonday},P3D,,week04)}; //本周周四

${__timeShift(y-M-d,${startMonday},P4D,,week05)}; //本周周五

${__timeShift(y-M-d,${startMonday},P5D,,week06)}; //本周周六

${__timeShift(y-M-d,${startMonday},P6D,,week07)}; //本周周日

${endSunday}; //本周周日

3、将时间处理的代码粘贴到beanshell取样器执行

4、其他请求取样器中引用时间变量

三、效果展示

四、总结归纳

如果只是简单获取当前系统时间,则使用time函数。

如果要获取当前一周内的每一天的日期,则需要结合java脚本和调用__timeShift函数

THE END  

声明:本站稿件版权均属中公教育优就业所有,未经许可不得擅自转载。

领取零基础自学IT资源

涉及方向有Java、Web前端、UI设计、软件测试、python等科目,内容包含学习路线、视频、源码等

点击申请领取资料

点击查看资料详情 

收起 


 相关推荐

问题解答专区
返回顶部