参数提取(extract)

extract提取参数

基于参数提取机制实现响应结果字段提取和参数关联

在实际业务场景中,很多时候存在参数关联的情况,即当前接口请求参数来自于之前接口的响应结果。

例如,通过手机号登录的场景中,登录接口请求参数需要带上服务端预先返回的短信验证码;如果缺少这个参数关联操作,接口调用将会失败。

目前,HttpRunner 支持 2 种响应结果字段提取方式。

提取的参数变量类似于 session 参数,作用域为当前步骤及之后的步骤,引用方式与普通的变量一致。

 

 

jmespath 表达式 

若响应结果为 JSON 结构,支持采用 jmespath 表达式进行参数提取。

jmespath 是一种 JSON 查询语言,可以使用非常灵活且强大的表达式查询 JSON 数据结构中的字段,并返回符合条件的数据。

针对 jmespath 官网中的示例:

 

{

"locations":[

{"name":"Seattle","state":"WA"},

{"name":"New York","state":"NY"},

{"name":"Bellevue","state":"WA"},

{"name":"Olympia","state":"WA"}

]

 

}

 

  • 查询所有城市名称:locations[*].name
  • 查询第二个城市名称:locations[1].name => “New York”
  • 查询最后一个州名:locations[-1].state => “WA”  ==  locations[3].state

HttpRunner 完全继承了 jmespath 的强大能力,只需要重点注意两点:

1、extract 的对象仅有 5 种类型:

  • status_code:提取响应状态码,例如 200、404
  • proto:提取协议类型,例如 “HTTP/2.0”、“HTTP/1.1”
  • headers:从响应 headers 中提取字段,例如 headers.name
  • cookies:从响应 cookies 中提取字段,例如 cookies.Token
  • body/content/json:从响应 body 中提取字段,例如 body.args.foo1  响应体

2、如果表达式中存在 - 的情况,那么需要加引号处理。

例如 headers."Content-Type"

"teststeps":[
{"name":"",
"variables":{"name":"demo"},
"request":
{"method":"POST",
"url":"https://www.httpbin.org",
"params":{},
"headers":{"name":"$name","Content-Type":"text/plain"},
"body":""
},
"validate":[],
"extract":{"name":"body.headers.Name"}
}
]

 

正则表达式(regex)

若响应结果为 text/html 格式,支持采用正则表达式的方式提取目标参数。

例如响应的 body 为:

 

<html><title>参数提取(extract) | HttpRunner</title></html>

 

如果我们想提取页面的 title 字段,就可以这样做:<title>(.*)</title>

即在提取表达式中指定目标参数的左右边界,然后将目标参数替换为 (.*);这样我们就能将正则匹配到的值赋值给参数变量了。

"teststeps":[{"name":"","variables":{"name":"demo"},"request":{"method":"GET","url":"https://www.httpbin.org","params":{},"headers":{"name":"$name","Content-Type":"text/plain"}},"validate":[],"extract":{"title":"<title>(.*)</title>"}}]

  • 52
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

请叫我小周啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值