这些天在使用Jmeter进行接口测试的时候,我遇到一些问题,做一下记录:
1.登录的时候会获取到tokenId这个字段信息,后面的接口都要用到这个字段信息。那么怎么拿到这个数据并且让它可以为后面的接口所用呢?
由于我在调用登录接口后,发现tokenId这个字段信息是存放json数据里面,所以就要用到Json Extractor了。
(1)点击线程组的“Add-Sampler-Http Request”,新增一个HTTP请求,命名为“登录系统”,输入正确的网址和参数,改为Post方法;
(2)点击HTTP请求的“Add-Post Processors-Json Extractor”,新增一个Json提取器,如下图:
(3)由于登录系统接口返回的数据大致如下,所以在Json Path expressions输入“$..token”。
有人可能就不明白了,为什么这么写,首先名称也就是Names of created variables,由我们自己定,但是要注意的一点是必须与后面引用时的名称一致。例如,我在后面一个接口中要用到这个参数,所以Value必须是“${对应名称}”,如下图:
JSON Path expressions 的写法是有格式的,为什么是“$..token”呢?
具体可以参考实例:https://github.com/json-path/JsonPath
2.如何获取系统时间
我在接口测试的时候发现有一个接口需要进行实时刷新,其中有一个参数就是系统时间,具体如下:
time=2020-03-27%2B15%3A43%3A12+。
可以用__time()函数获取当前时间
${__time()} 当前时间到计算机元年的毫秒数
${__time(时间格式)} 以预定的格式显示当前时间
time ${__time()} 1585300919568
YMD ${__time(YMD)} 20200327
HMS ${__time(HMS)} 171215
YMDHMS ${__time(YMDHMS)} 20200327171215
time1 ${__time(yyMMdd)} 200327
time2 ${__time(yyyy-MM-dd)} 2020-03-27
time3 ${__time(yyyy-MM-dd'T'HH:mm:ss)} 2020-03-27T17:12:15
time4 ${__time(yyyy-MM-dd'T'HH:mm:ss.SSS} 2020-03-27T17:12:15.123
只需要添加参数time,Value设置成“${__time(yyyy-MM-dd'+'HH:mm:ss)} ”
你以为这样就没问题了吗?结果还是报错了,一看Request Body,原来是格式不对,所以一定要记得勾选“URL Encode”,让time参数的值做转码处理。