经验分享:巧用jmeter的_time函数解决请求中需要时间戳的问题
问题描述
最近使用jmeter做接口测试遇到了一个有趣的问题,在这里跟大家分享一下
开发甩过来一个post接口,如下:
/imservice/open/v1/quemessage/updateMessageStatus?minMessageId=38798&maxMessageId=38798&senderId=M65E569FFE4B0DB9CAA2AA72E&receiverId=C5CB065A9E4B0C30F3EFF01FB&updateStatus=READ&updateTime=new Date()&questionId=c54df28223754d70a0f8eb47a876c472&chatCode=d4c1f291d924dfbf89ccde2ecf1581d7
相信做接口测试的第一步大家都了解,就是调试啊,在jmeter中搞了一个http post请求,run一下。
直接报http 400错误!!!
大家是否了解http 400的含义呢?是bad request!
why?怎么破,我多年工作的习惯是遇到问题第一时间先自己分析一下,然后再去找开发,这样就不会被鄙视!
仔细看了一下请求发现,问题大概率是出在updateTime=new Date()上,很显然这是在请求中加了个类似时间戳的东东,而jmeter在发送请求时,是不能通过new Date()来生成时间序列的!(我是熟悉java开发的)
于是乎我先去掉了参数 updateTime=new Date(),发现请求发送失败,到这里去找研发确认了一下,后台是会跟据updateTime参数进行判断的,这个参数必须有!想要发送成功需要发送当前的时间序列码!
看到这里大家会问,你们没有接口文档吗?接口文档里不应该交代清楚吗?
我的回答是:是的,我们没有接口文档!!!
OK,获得确认后,我想到了利用jmeter的__time函数来解决我的问题。
_time函数
我们可以直接使用jmeter的__time函数,使用非常方便
${__time(,)} ——默认该公式精确到毫秒级别, 13位数(1740640656619)
${__time(yyyy-MM-dd,)}——如:2025-02-27
${__time(YMDHMS,)}——如:20250227-151736,用‘-’隔开日期及时间
${__time(yyyy/MM/dd,)}——如:2025/02/27
测试一下
测试非常简单,我们只需要构建一个http request,具体如下

然后run这个request,通过View Results Tree我们可以方便的看到请求的发送内容

测试搞定!!!
最后使用${__time(,)}代替前面问题请求中的new Date()即可!
我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!
更多推荐

所有评论(0)