如何在JMeter中从API返回的JSON响应提取OTP 563991
嘿,我来给你分享几种在JMeter里提取这个OTP(563991)的实用方法,都是实战里常用的,你可以根据需求选:
方法1:JSON Extractor + 正则表达式提取器(精准分步)
这种方法先定位到包含OTP的Body字段,再从中提取数字,适合JSON结构复杂的场景:
- 第一步:添加JSON Extractor到返回该响应的HTTP请求下
右键目标HTTP请求 → 后置处理器 → JSON Extractor,然后配置:- 引用名称:填
bodyContent(随便起个好记的名字就行) - JSON Path表达式:
$.data.Body(这个路径能精准拿到"Please use OTP : 563991 to complete the process"这段文本) - 匹配数字:填1(取第一个匹配结果,这里只有一个)
- 引用名称:填
- 第二步:添加正则表达式提取器到同一个HTTP请求下
右键目标HTTP请求 → 后置处理器 → 正则表达式提取器,配置:- 引用名称:填
otp(后续用${otp}调用这个值) - 要检查的响应字段:选「引用名称」,然后填
bodyContent(也就是刚才提取的Body内容) - 正则表达式:
OTP : (\d+)(括号里的\d+会匹配连续的数字,就是我们要的OTP) - 模板:
$1$(取第一个分组的内容,也就是匹配到的数字) - 匹配数字:填1
- 引用名称:填
方法2:直接用正则表达式提取器(一步到位)
如果你的响应里OTP的格式很固定,直接从整个JSON响应里匹配更省事:
- 添加正则表达式提取器到目标HTTP请求下
- 配置参数:
- 引用名称:
otp - 要检查的响应字段:选「响应文本」(默认就是这个,不用改)
- 正则表达式:
OTP : (\d+) - 模板:
$1$ - 匹配数字:1
- 引用名称:
完成后,直接用${otp}就能拿到提取到的OTP码啦。
方法3:JSR223 PostProcessor(灵活定制)
要是你需要做一些额外的逻辑处理,比如验证OTP长度,可以用Groovy脚本:
- 添加JSR223 PostProcessor到目标HTTP请求下
- 在脚本编辑框里输入这段代码:
import groovy.json.JsonSlurper // 获取响应文本 def response = prev.getResponseDataAsString() // 解析JSON def json = new JsonSlurper().parseText(response) // 拿到Body内容 def bodyText = json.data.Body // 正则匹配OTP def otpMatcher = bodyText =~ /OTP : (\d+)/ // 把OTP存入变量 vars.put("otp", otpMatcher[0][1])
脚本执行后,${otp}就会包含提取到的563991了。
内容的提问来源于stack exchange,提问作者Aniket
相关产品推荐
相关产品推荐

