利用jmeter可以对接口之间进行关联,也可以通过参数化方式进行值得遍历,当然,也可以使用内置函数进行参数化等其他的需求。下面通过几个接口进行如上的示例
一:接口的参数化
这里有两个接口,一个注册,一个登入。在注册、登入的用户名中进行参数化
登入接口说明:
?
分析接口,用户名课进行参数化。设定参数化文档:
?
在jmeter工具中添加cvs
?
在登入接口中引用:
?
接口响应:
?
二:使用jmeter进行关联
?
如上接口,此接口需要成功,前提条件是:拿到登入返回的sign。问题来了,一个是登入接口,一个是添加金币的接口,如何让添加金币的接口拿到登入接口返回的sign呢?答案是关联。
对接口返回值的取值有两种方法:1、后置处理器的正则表达式取值方法 2、json表达式,注意哦,一定是后置处理器,因为是接口处理请求完后返回的结果,所以动作发生在接口和服务端交互完成后并且返回了结果的后面。好了,废话不多说,我们看操作
分析登入接口的返回值,我们发现返回的格式类型是json,自然而然的想到要用json格式的后置处理器
{
"error_code": 0,
"login_info": {
"login_time": "20180812191620",
"sign": "e00af804a0a440ed4728cfca54fb54dd",
"userId": 8586
}
}
json表达式====>$表示根目录 .表示直接子属性,这块学过xpath的表达式的,触类旁通便可
我们需要的值是sign,所以json的表达式为$.login_info.sign
?
添加金币处调用即可${sign}
?
三,jmeter函数的调用
?
jmeter中有很多内置的函数,__random __time __counter等,在这次的接口测试中,有一个接口,添加学生的接口
?
从上面接口分析来看,用户名和电话需要进行参数化,此时,如果参数化,会特别的折腾,需要“投机取巧”。设想,如果把电话号码后四位进行随机生成呢?名字的前缀相同,后缀进行随机呢,是不是可以免去大量的参数化工具呢?随机了多少次,能不能直观的看到呢?
{
"name":"admin${__Random(0,10000,)}",
"grade":"金牛座",
"phone":1367002${__Random(0,10000,)},
"sex":"女",
"age":18,
"addr":""
}
?
?
记录接口运行时间
在it界,时间有两种时间,一个是时间戳,一个是现实业务上的时间即通常我们说的时分秒。
时间戳:自计算机诞生以来到目前为止中间经过了多少S,java的程序应用中是MS为单位的,所以在转换的时候,需要进行ms和s之间的转换。__time函数,如果不设定日期yyyyMMddHHmmss (24小时制) yyyyMMddhhmmss (12小时制)
“时间戳在线转换工具” https://tool.lu/timestamp/
?
*******************************************************************************************************************************************************************************************************************************************
原文地址:https://www.cnblogs.com/miyatest/p/9499021.html