简介
本文详细介绍如何进行 JMeter的上个接口返回的值作为下一个接口的参数。可以通过 正则表达式 提取所需要的值,主要用于复杂文本处理,如模式匹配、格式检验、文本替换等(注意如果返回为 JSON,更建议使用JSON提取器),本次仅作为学习记录。
步骤
① 查看需要提取字段的接口响应结果(JSON),编写正则表达式
实例1:通过课程信息获取到店铺ID接口的响应body,要取liveId字段(Response Body只有匹配到1个liveId),
所以 正则表达式 设置成 "liveId":(\d+),表示一个或多个数字;
模版设置$1$表示取第一个()中的值,不设置会取不到值,至于其它符号具体含义可以自行查文档,本人正则也不熟悉;
也可以使用GPT生成正则表达式之后在正则表达式验证工具上验证是否正确。
{
"data": {
"courseConfig": {
"businessId": 21000008,
"censorStatus": "audit_pass",
"displayStatus": null,
"updateTime": null,
"title": "名称不符合运营规范",
"liveId": 2000000113920002,
"shareType": "normal",
"imgUrl": "https:xxx/channelNormal.png",
"createBy": null,
"createTime": null,
"updateBy": null,
"id": null,
"describe": null,
"businessType": "1"
}
},
"etag": null,
"id": "1583460509602802",
"state": {
"msg": "操作成功",
"code": 0
}
}
JMeter正则表达式设置如下
示例2:通过通过indexRecommend接口获取店铺ID(数组)接口的响应body,要取liveId字段(Response Body匹配到多个liveId),
所以 正则表达式 设置成 "liveId":\s*"(\d+)",匹配数值(Match No)设置为3,代表取Response Body匹配到的第3个liveId;
indexRecommend接口获取店铺ID(数组)接口的响应body的数组太长就不贴上来了,需要的自行构造body进行测试。
通过调试取样器(DebugSample)可以看到已经取到了数组中的第3个liveId
延伸:
正则表达式验证工具RegexTester,可以用来验证所写的正则表达式是否有误
下载地址:https://sourceforge.net/projects/regextester/
下载后解压,不需要安装,直接点击应用程序
工具使用效果如下
②添加请求,设置变量参数
(1)添加http 请求,并设置为get请求,
(2)打开Body Data(消息体数据)页,设置Json格式,并参数化,使用 ${变量名},取自
正则表达式提取器中的引用名称(Name of created variable) 。
(3)参数化时,可以直接设置,参照如下
通过结果树,我们发现Jmeter发送的getData已经成功读取 [通过课程信息获取到店铺ID] 接口的响应body的liveId数据,并成功参数化。