【Jmeter】时间变量参数
来源:互联网 发布:谷歌娘语音软件 编辑:程序博客网 时间:2024/06/03 18:00
在使用Jmeter编写接口测试脚本参数化时,不可避免的使用时间变量,比如时间戳,比如当前时刻点,比如当前日期等等,现在将项目中遇到的一些情况列举一下
__time函数
时间变量,最简单易用的就是Jmeter自带的__time函数
调出函数助手,生成一个__time
函数
调用时间戳参数变量
13位时间戳
${__time(,)} //默认该公式精确到毫秒级别, 13位数
10位时间戳
${__time(/1000,)} //该公式精确到秒级别, 10位数
xx秒后10位时间戳
${__intSum(${__time(/1000,)},6000,)}
调用日期格式参数变量
调用yyyy-MM-dd格式日期
${__time(yyyy-MM-dd,)} //2017-06-28
调用YMDHMS格式日期
${__time(YMDHMS,)} //2017-06-28-211532
The following shorthand aliases are provided
- YMD = yyyyMMdd
- HMS = HHmmss
- YMDHMS = yyyyMMdd-HHmmss
- USER1 = whatever is in the Jmeter property time.USER1
- USER2 = whatever is in the Jmeter property time.USER2
JavaScript实现
除了Jmeter提供的时间函数,也可以使用 JavaScript实现一些时间变量
获取当前日期
${__javaScript((new Date()).getFullYear()+'-'+ ((new Date()).getMonth()+1) + '-' + (new Date()).getDate(),)}
Java实现
现在要实现一个时间变量,时间格式为HH:MM的UTC时间
Jmeter 提供日期函数,功能太弱;JavaScript也许可以,但不熟练;现在用JAVA在BeanShell PreProcessor
中实现
在使用前,了解什么是BeanShell
- 一个小型嵌入式Java源代码解释器,能够动态地执行标准JAVA语法,并利用在JavaScript和Perl中常见的的松散类型、命令、闭包等通用脚本来对其进行拓展
- 通过运行其内部的脚本来处理Java应用程序,还可以在运行过程中动态执行java应用程序执行java代码
- 使用语言JAVA,运行在同一个虚拟机的应用程序,可以自由地引用对象脚本并返回结果
现在我们使用的是BeanShell PreProcessor
,即前置处理器,在执行某个接口时,会先执行前置处理器
代码实现
好,现在在BeanShell编译器中进行代码编写
取得本地时间
StringBuffer UTCTimeBuffer = new StringBuffer(); Calendar cal = Calendar.getInstance() ;
取得时间偏移量
int zoneOffset = cal.get(java.util.Calendar.ZONE_OFFSET);
取得夏令时差
int dstOffset = cal.get(java.util.Calendar.DST_OFFSET);
取得UTC时间(从本地时间里扣除这些差量)
cal.add(java.util.Calendar.MILLISECOND, -(zoneOffset + dstOffset));
获取具体的时间信息
int year = cal.get(Calendar.YEAR); int month = cal.get(Calendar.MONTH)+1; int day = cal.get(Calendar.DAY_OF_MONTH); int hour = cal.get(Calendar.HOUR_OF_DAY); int minute = cal.get(Calendar.MINUTE);
修改时间格式
因为若hour为0~9时,为1位数,但是接口需要传的时间格式为xx:xx(如:09:20),故需要修改时间格式
在弄这个的时候,开始想着是否可以加一个if
判断,若为1位数的时候(首先看看是否有函数判断int类型的位数,然后想着判断小于10),就在前面拼接一个0,但是这种方式太low了
后面发现原生函数就即可实现字位数不够,高位补0
import java.text.DecimalFormat;//如果数字1是字符串,如下处理:String str1="1";DecimalFormat df=new DecimalFormat("0000");String str2=df.format(Integer.parseInt(str1));System.out.println(str2);//如果数字1是整型,如下处理:int str1=1;DecimalFormat df=new DecimalFormat("0000");String str2=df.format(str1);System.out.println(str2);
现在即可实现我们需要完成的时间格式
DecimalFormat df=new DecimalFormat("00");String HH=df.format(hour);String MM=df.format(minute);
拼接时间段
UTCTimeBuffer.append(HH).append(":").append(MM); String timer = UTCTimeBuffer.toString();
将时间变量赋值给全局变量
首先定义一个全局变量utcNowTimer
赋值给该全局变量
vars.put("utcNowTimer",timer);String timeStr = vars.get("utcNowTimer");log.info(timeStr);
OK,搞定
- 【Jmeter】时间变量参数
- Jmeter变量参数化及函数应用
- Jmeter变量参数化及函数应用
- Jmeter变量参数化及函数应用
- jmeter参数化数据之自定义变量
- Jmeter变量
- JMeter 参数设置 变量 url
- JMeter 参数设置 变量 url
- Jmeter属性和变量
- Jmeter属性和变量
- Jmeter属性和变量
- Jmeter属性和变量
- Jmeter属性和变量
- JMeter 参数化之利用JDBC Connection Configuration从数据库读取数据并关联变量
- jmeter参数化数据(_csvread函数、用户自定义变量等)
- Jmeter时间格式化
- jmeter 参数解释
- Jmeter相关参数说明
- codeforces 567A Lineland Mail
- Arduino开发之Light Sensor
- 【OpenVswitch源码分析之二】架构
- 禁止复制
- 解决robotframework连接mysql数据库返回中文数据显示乱码
- 【Jmeter】时间变量参数
- webgl——实现物体描边效果
- 各种ESB产品比较
- 搭积木般构建深度学习网络——Xception完整代码解析
- JAVA自定义注解(Target,Retention,Documented,Inherit)
- MySQL数据库笔记(1 )
- ssm整合jsp的添加界面
- autowire的五种方式
- 写博客的初衷