【JMeter04】接口关联

个人站点: 测试开发者https://www.devtester.cn/

1. 测试项目

因为新蜂商城没有发现比较好的用来做接口关联示例的接口,所以这里更换为公主号测试平台进行示例
申请测试账号
申请地址:http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index
API文档:https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html
用自己的号扫码登录即可,后期需要用到appID与appsecret来获取token

2. 接口关联

在项目中,一些操作往往需要调用多个接口,并且接口之间互有关联。如公众号接口平台后续的操作基本都需要有access_token,我们需要首先将access_token取到,然后在后续接口中使用。

2.1 获取access_token接口

请求说明:GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
JMeter调用成功后,获取到access_token值与有效期
在这里插入图片描述

2.2 将access_token保存为参数

显然,access_token每次申请后都会发生变化,如果不做变量保存,则后续操作无法进行
常用的方法为在请求后面添加后置处理器的json处理器或正则表达式提取器,一般而言,正则表达式提取器通用性更高一些。下面以这两种方式做说明

2.2.1 Json提取器

a. json提取器

对象:{}
List:[]
$ 表示根节点
. 表示子节点
$.key$[“key”]
表示递归取得

  • $…id将key为id的值取出来,只会作为独立的值而不是容器类型

$.key[index].sub-key

表达式说明
$根节点
@当前节点
.or[]子节点
选择所有符合条件的节点
*所有节点
[]迭代器标示,如数组下标
[,]支持迭代器中做多选
[start : end : step]数组切片运算符
?()支持过滤操作
()支持表达式计算

当有多个值需要提取时,需要使用分号;隔开,注意数量要对应,否则会报错

b.具体参数设置说明

Names of created variables:接收值的变量名,示例定义了两个,ac_token获取access_token的值,ex获取expires_in的值
Json path:jsonpath表达式
Match no:0随机;n取第几个匹配值;-1匹配所有,后续引用变量名_N取第N个值
Compute comcatemation var(suffix_ALL):如果发现许多结果,插件将使用" , "分隔符将它们连接起来,并将其存储在名为< variable name>_ALL的var中
Default values:默认值,匹配不到值的时候取该值
在这里插入图片描述

建议加入调试取样器,便于在结果中观察
在这里插入图片描述

2.2.2 正则表达式提取器

在某些项目中,服务器返回并非json格式的文本,这时候,可以用正则表达式来提取想要的值,也从这里可以看出,正则表达式的适用范围会更广一些

a. 正则表达式

正则表达式作为一种通用的对字符串操作的一种逻辑公式,用以过滤出自己想要的内容
完整参考:https://www.runoob.com/regexp/regexp-syntax.html
JMeter常用 左边界(.*?)右边界 来提取我们所需要的值,简单粗暴却实用
**(.*?)**就是我们需要找到的值。从这里可以看出,关键是要确保左右边界能够在响应中唯一,如果有与其他文本重复,我们需要继续扩大边界范围
简单说明如下,注意使用英文标点:
() 分组,如果需要匹配,则需要加
. 表示匹配除换行以外的任意一个字符
* 表示前面的元素出现0次及以上,即任意次, 等价于{0,}
+ 表示前面的元素出现至少一次, 等价于{1, }
? 表示前面的元素最多只能出现一次,或者将贪婪模式转换为非贪婪模式

b. 具体操作

添加后置处理器-正则表达式提取器
引用名称即后续要使用的变量名。
模板:表示ack要取的分组的值,正则表达式分组下,$0$ 表示取包括边界在内的整个值,$1$ 表示ack取第一个分组的值,在这里为access_token的值,$2$ 表示ack取第二个分组的值,这里是expires_in的值
在实际使用中可以通过${引用名称_g1}的形式来使用,1对应 1 1 1,2对应 2 2 2,以此类推
在这里插入图片描述

在调试结果中查看
在这里插入图片描述

2.3 在另一接口中引用

JMeter通过 ${引用名称} 来使用变量,这里我们使用${ack},根据上文,${ack_g1}也有同样的效果,可以试一试哦
以获取用户标签为例
接口说明:http请求方式:GET(请使用 https 协议) https://api.weixin.qq.com/cgi-bin/tags/get?access_token=ACCESS_TOKEN
在这里插入图片描述

返回结果
在这里插入图片描述

3. 综述

通过上面的步骤,我们可以通过后置处理器Json提取器或正则表达式保存服务器的响应数据,并且在后续请求中使用,以达到接口关联的目的了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值