问:我们在测试接口的时候,特别是需要用到时间戳的时候,我们是怎么处理的呢?
答:用时间戳工具转换。
很自然的我们都能想到用时间戳工具转换,把自己要设定的日期通过工具转换成时间戳,再放到 jmeter 里面调用。如果单独测试功能的时候这样做确实不错,但是如果是在接口自动化的时候呢?还可以这样操作吗?答案当然是不能了,顾名思义,自动化的时候我们人是不用怎么去干预它的运行的,因此我们要用另一个思路来解决这个问题。
这里我提供了两个方法来获取时间戳
1、就是 jmeter 自带的一个函数助手,里面有一个叫_time 的函数
我们要用时间戳时可以获取当前时间的时间戳,公式为:
${__time(,)} : 默认该公式精确到毫秒级别, 13 位数
${__time(/1000,)} : 该公式精确到秒级别, 10 位数
如果参数需要为当前日期,那公式为:
${__time(yyyy-MM-dd,)}
${__time(YMDHMS,)}
执行结果如下:
2、利用 BeanShell,写 java 代码来获取
Java 代码如下:
package bluemoon.bee;
import java.sql.Date;
public class getTime {
public static void main(String[] args) {
// TODO Auto-generated method stub
}
static public long getPlanDate(){
long date = System.currentTimeMillis();
return date ;
}
}
编写好 java 脚本后,到处为可执行 jar 包,然后把这个可执行 jar 包放到 Jmeter 中的 lib/ext 目录下
接着在 jmeter 中添加 BeanShell 组件
添加如下代码:
import bluemoon.bee.getTime;
long planDate = getTime.getPlanDate();
vars.put("planDate",planDate.toString());
然后就可以调用这个 planDate 获取到的时间戳参数了