HttpRunner自动化测试工具之获取响应数据extract提取值到变量

获取响应数据

extract: 提取

注:extract 应与request保持同一层级

1、响应行,响应头;通过 extract 提取响应的数据并存储到变量中,如下图:

注:变量名的前面要有 - 

# 获取响应数据: 响应行(200,ok)\响应头
- config:
    name: 测试百度网站
    base_url: https://www.baidu.com

- test:
    name: 接口名称 百度接口
    request:
      url: /
      method: GET
    extract:  # 提取值存储到变量中
      - code: status_code  # 响应码
      - info: reason       # ok
      - header_Content: headers.Content-Type  # 响应头部
    validate:
      - eq: [$code,200]  # 引用变量  $变量名
      - eq: [$info,"OK"]
      - eq: [$header_Content,'text/html']

2、获取响应正文

extract 解析响应正文(支持正则)

通过 extract 提取响应正文的数据并存储到变量中(可使用正则提取),如下图:

注:如果断言为中文,加上headers头部的Accept-Language即可,后面有专门写的中文乱码解码的问题解决

# 获取响应数据  响应正文(支持正则)
- config:
    name: 百度
    base_url: https://www.baidu.com

- test:
    name: 百度主页
    request:
        url: /
        method: GET
        headers:  # 如果断言为中文的话,加上headers的Accept-Language即可
          Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
          Accept-Encoding: gzip, deflate, br
          Accept-Language: zh-CN,zh;q=0.9
          User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36
    extract:
      - title: <title>(.+?)</title>  # 可以使用正则表达式提取
    validate:
      - eq: [$title,"百度一下,你就知道"]

extract 解析响应正文(支持json)

通过 extract 提取响应正文的数据并存储到变量中(提取json数据),格式以content为根节点:content.key.key.key ;如下图:

注:可通过 https://www.bejson.com/ 该网址展示json视图更清晰

# 获取响应数据  响应正文 (支持json)
- config:
    name: 用户标签管理
    base_url: https://api.weixin.qq.com

- test:
    name: 百度主页
    request:
        url: /cgi-bin/tags/get
        method: GET
        params:
          access_token: 49_lsdk_pQJJ4R5IWdWVcDTQu3bHyVOsHDlAcuA99UtVwsmzrtHhSGJKgSPMi3i3TdOQrGeuzZdB62K1uhcKJQAk6eKjzlBL7HgWvAmw7gfiRTp00QnLdSZzN7ul9f2TMPex-Iz2tCg-ZWsSPLbJTJdABAYIY
    extract:
      - id: content.tags.0.id
      - name: content.tags.0.name
    validate:
      - eq: [$id,2]
      - eq: [$name,"星标组"]

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!  

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

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

相关文章

【比赛专题】江苏省信息安全管理与评估 理论题样题题库整理

GZ032 信息安全管理与评估赛题第1套 一、 单选题 &#xff08;每题 2 分&#xff0c;共 35 题&#xff0c;共 70 分&#xff09; 1、《中华人民共和国数据安全法》已由中华人民共和国第十三届全国人民代 表大会常务委员会第二十九次会议通过&#xff0c;现予公布&#xff0c;自…

蓝桥杯基础知识1 字母大小写转换

蓝桥杯基础知识1 字母大小写转换 isalpha()判断一个字符是否为字母。 isalnum()判断一个字符是否为十进制数字字符或者字母&#xff0c;是否属于a~ z或A~ Z或0~9。 isdigit() 判断一个字符是否是十进制数字字符。十进制数字是&#xff1a;0 1 2 3 4 5 6 7 8 9 isalnum()和isdig…

【python】合并具有相同数字前缀的 CSV 文件

一、问题 有一个文件目录&#xff0c;目录下有类似下列文件名&#xff1a;1_a.csv、1_b.csv、1_c.csv、2_a.csv、2_b.csv、2_c.csv......即下划线前面数字相同的不同csv文件有几个&#xff0c;他们的行数相同&#xff0c;列名不同。 想把这个目录下&#xff0c;数字相同的几个…

YOLOv5改进 | 损失篇 | VarifocalLoss密集检测专用损失函数 (VFLoss,论文一比一复现)

一、本文介绍 本文给大家带来的是损失函数改进VFLoss损失函数,VFL是一种为密集目标检测器训练预测IoU-aware Classification Scores(IACS)的损失函数,我经过官方的版本将其集成在我们的YOLOv8的损失函数使用上,其中有很多使用的小细节(否则按照官方的版本使用根本拟合不了…

讨好自己的五大法宝,让生活更精彩

在这个繁忙的世界里&#xff0c;让生活更精彩并不难&#xff0c;关键是你愿不愿意给自己一点小惊喜。让我们一起探讨一下&#xff0c;如何用五大小法宝&#xff0c;讨好自己&#xff0c;让生活更加美好。 1. 每周安排“自己时间” 在繁忙的工作和学习之余&#xff0c;留出每周…

echart图表

首先我们要知道ECharts是什么,它是怎么用的&#xff1f; ECharts是一个使用JavaScript实现的开源可视化库&#xff0c;它涵盖各行业图表&#xff0c;满足各种需求。它提供了丰富的图表类型和交互能力&#xff0c;使用户能够通过国简单的配置生成各种各样的图表&#xff0c;包括…

使用opencv做双目测距(相机标定+立体匹配+测距)

最近在做双目测距&#xff0c;觉得有必要记录点东西&#xff0c;所以我的第一篇博客就这么诞生啦~ 双目测距属于立体视觉这一块&#xff0c;我觉得应该有很多人踩过这个坑了&#xff0c;但网上的资料依旧是云里雾里的&#xff0c;要么是理论讲一大堆&#xff0c;最后发现还不知…

钡铼分布式IO在玻璃制造中的实时数据采集与监控应用介绍

导读 玻璃行业多年来一直广泛使用 PLC 来帮助管理生产过程所需的精确材料比例&#xff0c;完全依赖其PLC进行数据采集与控制&#xff0c;并且大量依靠人工来操作&#xff0c;所以这些高成本推动了对成本较低的替代方案的需求。 场景描述 某玻璃厂生产的玻璃生产包括配料段、熔…

Debezium发布历史49

原文地址&#xff1a; https://debezium.io/blog/2019/02/19/reliable-microservices-data-exchange-with-the-outbox-pattern/ 欢迎关注留言&#xff0c;我是收集整理小能手&#xff0c;工具翻译&#xff0c;仅供参考&#xff0c;笔芯笔芯. 使用发件箱模式进行可靠的微服务数…

开源框架 MIT 是什么是否可以商用

MIT开源协议是一种宽松的开源许可证&#xff0c;允许软件在保留版权和许可证声明的前提下&#xff0c;免费使用、复制、修改、合并、出版、分发、再授权和销售等。该许可证适用于几乎所有类型的软件&#xff0c;包括商业软件和专有软件。MIT许可证的底层原理是&#xff0c;通过…

React(2): 使用 html2canvas 生成图片

使用 html2canvas 生成图片 需求 将所需的内容生成图片div 中包括 svg 等 前置准备 "react": "^18.2.0","react-dom": "^18.2.0","html2canvas": "^1.4.1",实现 <div ref{payRef}></div>const pa…

servlet+jdbc+jsp实现登录界面的验证(基于MVC思想)

一、MVC的概念 MVC是模型(Model)和视图(View)以及控制器(Controller)的简写&#xff0c;是一种将数据、界面显示和业务 逻辑进行分离的组织方式&#xff0c;这样在改进界面及用户交互时&#xff0c;不需要重新编写业务逻辑&#xff0c;从而提高了 代码的可维护性。 M&#xf…

如何在Linux上安装使用达芬奇DaVinci-Resolve视频剪辑|附带格式转换脚本

如何在openSUSE-Linux上安装DaVinci-Resolve 您是否还在等待Adobe套件在Linux上的到来&#xff1f;您是否曾多次尝试通过Wine使用Premiere&#xff1f;您是否还在想苹果为什么不以Linux本机版本发布Final Cut Pro&#xff1f; 如果您对所有这些问题中的一个或全部回答是&…

K8S学习指南(65)-Operator介绍

文章目录 引言什么是 Operator&#xff1f;Operator 的优势1. 自动化操作2. 定制资源3. 增强运维功能4. 增强 K8S 原生 API Operator 的优缺点优点&#xff1a;1. 自动化运维2. 定制资源3. 跨平台性4. 增强 K8S API缺点&#xff1a;1. 学习成本2. 复杂性3. 需要专业知识 Operat…

C 字符串替换方法

/* 功能&#xff1a;将str字符串中的oldstr字符串替换为newstr字符串 * 参数&#xff1a;str&#xff1a;操作目标 oldstr&#xff1a;被替换者 newstr&#xff1a;替换者 * 返回值&#xff1a;返回替换之后的字符串 * */ std::string BaseUtil::strrpc(char *str,char *oldst…

浅析观察者模式在Java中的应用

观察者模式&#xff08;Observer Design Pattern&#xff09;,也叫做发布订阅模式&#xff08;Publish-Subscribe Design Pattern&#xff09;、模型-视图&#xff08;Model-View&#xff09;模式、源-监听器&#xff08;Source-Listener&#xff09;模式、从属者&#xff08;D…

AI绘画Midjourney绘画提示词Prompt大全

一、Midjourney绘画工具 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭…

高版本ant-design动态引用icon

需求 最近在更新自己的博客系统&#xff0c;从 vue2 升到 vue3&#xff0c;同步的也把 ant-design 从 1.7.8 跨越多个大版本升级到了 4.0.8&#xff0c;发现菜单上的 icon 报错了。 查询官方文档发现自从 2.0 版本以后的 icon 就不再支持通过 <a-icon /> 组件动态 type…

uniapp 文字超出多少字,显示收起全文按钮效果demo(整理)

收起展开 <template><view class"font30 color000 mL30 mR30"><text :class"showFullText ? : clamp-text">{{ text }}</text><view v-if"showToggleBtn && text.length > 42" click"toggleShowFu…

Python:类型标注解决循环引用问题most likely due to a circular import

两个模块&#xff0c;我们需要做类型标注&#xff0c;于是出现了循环引用的问题 # models.py from controllers import BookControllerclass Book:def get_controller(self) -> BookController:return BookController(self)# controllers.py from models import Bookclass …