HttpRunner4.x 支持 2 种响应结果字段提取方式:jmespath 表达式和 正则表达式(regex)
extract 的对象仅有 5 种类型:
如果表达式中存在 - 的情况,那么需要加引号处理。
headers."Content-Type"
使用示例
config:
name: 引用变量
variables:
username: test123
teststeps:
-
name: post
variables:
username: test456
request:
method: POST
url: http://httpbin.org/post
json:
username: ${username}
password: "123456"
extract:
url: body.url
origin: body.origin
agent: headers."Content-Type"
validate:
- eq: [status_code, 200]
使用hrp run
命令行运行
hrp run xuexi/test_extract.yml --gen-html-report
运行日志可以看到提取的结果
3:53PM INF run step end exportVars={"agent":"application/json","origin":"183.193.27.78","url":"http://httpbin.org/post"} step=post succ
ess=true type=request
3:53PM INF run testcase end testcase="引用变量"
3:53PM INF create folder path="results\\20230505155322"
3:53PM INF generate HTML report path="results\\20230505155322\\report.html"
响应结果为 JSON 结构,支持采用 jmespath 表达式进行参数提取。返回的非json格式,可以用正则表达式(regex) 提取.
如下示例响应结果为 text/html 格式
config:
name: 引用变量
variables:
username: test123
teststeps:
-
name: blog
request:
method: GET
url: https://www.cnblogs.com/yoyoketang/
extract:
title: "<title>(.*)</title>"
validate:
- eq: [status_code, 200]
- eq: ["${title}", 200]
(相对于httprunner3.x 版本,新增了正则表达式提取结果,这点弥补了3.x 版本取值上的缺陷)
使用jmespath提取 JSON 响应正文(text/html 格式用正则表达式提取)并使用预期值进行验证。
校验示例
config:
name: 校验结果
teststeps:
-
name: post
variables:
username: test456
request:
method: POST
url: http://httpbin.org/post
json:
username: ${username}
password: "123456"
validate:
- eq: [status_code, 200]
- eq: [body.url, "http://httpbin.org/post"]
- eq: [body.origin, "183.193.27.78"]
- eq: [headers."Content-Type", "application/json"]
validate 也可以支持引用提取的结果
config:
name: 校验结果
teststeps:
-
name: post
variables:
username: test456
request:
method: POST
url: http://httpbin.org/post
json:
username: ${username}
password: "123456"
extract:
url: body.url
origin: body.origin
type: headers."Content-Type"
validate:
- eq: [status_code, 200]
- eq: ["${url}", "http://httpbin.org/post"]
- eq: ["${origin}", "183.193.27.78"]
- eq: ["${type}", "application/json"]