httprunner 4.x学习 - 04提取(extract)和校验(validate)
前言
支持 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"]
标签:
httprunner4.x
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?