httprunner 4.x学习 - 04提取(extract)和校验(validate)

news/发布时间2024/5/16 18:39:50

前言

支持 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: admin1teststeps:
-name: postvariables:username: adminrequest:method: POSTurl: http://120.25.121.168:19001/api/loginjson:username: ${username}password: "quxue2023"extract:url: body.urlorigin: body.originagent: 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: adminteststeps:
-name: blogrequest:method: GETurl: https://www.cnblogs.com/quxueextract:title: "<title>(.*)</title>"validate:- eq: [status_code, 200]- eq: ["${title}", 200]

validate 校验结果

使用jmespath提取 JSON 响应正文(text/html 格式用正则表达式提取)并使用预期值进行验证。

  • 提取结果:jmespath 表达式或正则表达式提取,更多细节参考JMESPath 教程
  • 预期值:这里也可以使用指定的预期值、变量或函数引用
config:name: 案例teststeps:
-name: postvariables:username: adminrequest:method: POSTurl: http://120.25.121.168:19001/api/loginjson:username: ${username}password: "quxue2023"validate:- eq: [status_code, 200]- eq: [body.data.username, "admin"]- eq: [body.data.message, "成功"]- eq: [headers."Content-Type", "application/json"]

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/32318280.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

Python3 YOLOv8 车牌号识别提取

参考https://blog.csdn.net/Pan_peter/article/details/130465041 (参考教程) https://wwwf.lanzout.com/iCY5N0uhltdg (car.pt 已下载) https://github.com/ultralytics/ultralytics/issues/2046 (可视化参数问题) https://cloud.tencent.com/developer/article/2214890 (…

C++U6-12-阶段复习测评

7、贝尔曼福特算法,是按顺序一轮一轮的松弛,如果有可以松弛的那就再来一轮;这个题第二轮就没有可以松弛的了,所以就没有第3轮了 8、这题是dijkstra算法,算法逻辑是: Dijkstra 最短路径算法的步骤如下:初始化:创建一个距离数组 dist,用于存储起点到每个节点的初始估计…

H3C配置IRF实现网络设备堆叠

网络设备虚拟化-H3C交换机堆叠配置堆叠的概述 在此之前了解一下什么是堆叠,堆叠是指将多台交换机设备通过线缆连接后组合在一起,虚拟化成一台设备,是一种横向虚拟化技术。堆叠作为一种横向虚拟化技术,将多台设备在逻辑上虚拟成一台设备,可以简化网络的配置和管理。华三的虚…

小小逻辑判断符的错误使用,资损几万块

小小逻辑判断符,资损几万块分享是最有效的学习方式。 博客:https://blog.ktdaddy.com/故事 这是一个真实事件,三年前老猫负责公司的支付资产业务。为了响应上级号召,加强国央企之间的合作,公司新谈了一个支付对接的渠道(当然这个支付渠道其实很冷门的,也是为了对接而对接…

MySQL 函数

汇总函数 rollup rollup是 SQL 关键字,在 MySQL 中得用with rollup。它是group by子句的扩展,用于统计后增加一行汇总数据。 举例,现有库存表,我们按仓库名称分组,统计每个仓库的产品总量,最后来一个汇总。 mysql> SELECT * FROM inventory; +----+---------------+--…

《线性代数的本质》笔记(01-03)

前言: 本系列为《线性代数的本质》的笔记,作者为3Blue1Brown大神,视频的b站链接为 https://www.bilibili.com/video/BV1ys411472E/?spm_id_from=333.999.0.0&vd_source=cb7d5dd830bc59a85c459b0b14a2e685 看了这个系列视频后我受益匪浅,为了方便后续回顾所以整理成了文…