前言
支持 2 种响应结果字段提取方式:
1.jmespath 表达式:响应结果为 JSON 结构,采用 jmespath 表达式进行参数提取。参考教程https://jmespath.org/tutorial.html
2. 正则表达式(regex):返回的非JSON 格式,可以用正则表达式(regex) 提取。需要具备一定的正则知识
extract 提取返回结果
extract 提取的对象有 5 种类型:
1.headers:从响应 headers 中提取字段,例如 headers.name
2.cookies:从响应 cookies 中提取字段,例如 cookies.Token
3.body:从响应 body 中提取字段,例如 body.args.foo1
4.status_code:提取响应状态码,例如 200、404
5.proto:提取协议类型,例如 “HTTP/2.0”、“HTTP/1.1”
如果表达式中存在特殊符号,需要引号包围,如:
headers."Content-Type"
案例:
config: name: 案例 variables: username: admin1 teststeps: - name: post variables: username: admin request: method: POST url: http://120.25.121.168:19001/api/login json: username: ${username} password: "quxue2023" extract: url: body.url origin: body.origin agent: headers."Content-Type" validate: - eq: [status_code, 200]
执行:hrp run testcases\login_imos.yml --gen-html-report从执行日志可以清楚看到提取的信息:
6:32PM INF run step end exportVars={"agent":"application/json","origin":null,"url":null} step=post success=true type=request 6:32PM INF run testcase end testcase="案例" 6:32PM INF generate HTML report path="reports\\report-1713004361.html"
正则表达式(regex)
返回的非json格式,可以用正则表达式(regex) 提取.
如下示例响应结果为 text/html 格式
config: name: 案例 variables: username: admin teststeps: - name: blog request: method: GET url: https://www.cnblogs.com/quxue extract: title: "<title>(.*)</title>" validate: - eq: [status_code, 200] - eq: ["${title}", 200]
validate 校验结果
使用jmespath提取 JSON 响应正文(text/html 格式用正则表达式提取)并使用预期值进行验证。
- 提取结果:jmespath 表达式或正则表达式提取,更多细节参考JMESPath 教程
- 预期值:这里也可以使用指定的预期值、变量或函数引用
config: name: 案例 teststeps: - name: post variables: username: admin request: method: POST url: http://120.25.121.168:19001/api/login json: username: ${username} password: "quxue2023" validate: - eq: [status_code, 200] - eq: [body.data.username, "admin"] - eq: [body.data.message, "成功"] - eq: [headers."Content-Type", "application/json"]
标签:和校验,username,提取,name,04,extract,body,httprunner,eq From: https://www.cnblogs.com/quxue/p/18133225