【HttpRunner】接口自动化测试框架

简介

2018年python开发者大会上,了解到HttpRuuner开源自动化测试框架,采用YAML/JSON格式管理用例,能录制和转换生成用例功能,充分做到用例与测试代码分离,相比excel维护测试场景数据更加简洁。在此,利用业余时间研究这个框架去实现接口自动化测试。

HttpRunner 是一款面向 HTTP(S) 协议的通用开源测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。

主流接口自动化工具框架:

从上图可知,技术选型一般会优先考虑Requests+Python和HttpRunner,Requests+Python在自动化测试总结分类里面有文章讲过,这里我们针对HttpRunner进行探索。

框架流程

主要特性:

  • 继承 Requests 的全部特性,轻松实现 HTTP(S) 的各种测试需求
  • 采用 YAML/JSON 的形式描述测试场景,保障测试用例描述的统一性和可维护性
  • 借助辅助函数(debugtalk.py),在测试脚本中轻松实现复杂的动态计算逻辑
  • 支持完善的测试用例分层机制,充分实现测试用例的复用
  • 测试前后支持完善的 hook 机制
  • 响应结果支持丰富的校验机制
  • 基于 HAR 实现接口录制和用例生成功能(har2case)
  • 结合 Locust 框架,无需额外的工作即可实现分布式性能测试
  • 执行方式采用 CLI 调用,可与 Jenkins 等持续集成工具完美结合
  • 测试结果统计报告简洁清晰,附带详尽统计信息和日志记录
  • 极强的可扩展性,轻松实现二次开发和 Web 平台化

 环境安装:

HttpRunner 是一个基于 Python 开发的测试框架,可以运行在 macOS、Linux、Windows 系统平台上。HttpRunner 支持 Python 3.4 及以上的所有版本,推荐建议使用 Python 3.4 及以上版本。

使用pip命令安装:pip3 install httprunner  【因本人环境装有python两个版本,这里使用是python3.6版本,就使用pip3命令,如是python2.7版本的话,就用pip命令安装】

安装完成后校验:


如版本号正常显示,则说明安装正常。

基础功能

  1、 录制生成用例

在转换生成测试用例之前,需要先将抓取得到的数据包导出为 HAR 格式的文件。使用Charles抓包工具 Proxy中的操作方式为,选中需要转换的接口(可多选或全选),点击右键,在悬浮的菜单目录中点击【Export...】,格式选择HTTP Archive(.har)后保存即可;假设我们保存的文件名称为test.har

 转换测试用例

在命令行终端中运行 har2case 命令,即可将 test.har 转换为 HttpRunner 的测试用例文件。 使用 har2case 转换脚本时默认转换为 JSON 格式

加上 -2y/--to-yml 参数后转换为 YAML 格式

两种格式完全等价,YAML 格式更简洁,JSON 格式支持的工具更丰富,大家可根据个人喜好进行选择。

生成后的用例如下图所示:

json格式:

YAML格式:

  • config:作为整个测试用例集的全局配置项
  • test:对应单个测试用例
  • name 这个test的名字
  • request 这个test具体发送http请求的各种信息, 如下:
  • url 请求的路径 (若config中有定义base_url, 则完整路径是用 base_url + url )
  • method 请求方法 POST, GET等等
  • data 传入参数值
  • validate 完成请求后, 所要进行的验证内容. 所有验证内容均通过该test才算通过,否则失败.

  2、运行测试

若希望测试用例在运行过程中,遇到失败时不再继续运行后续用例,则可通过在命令中添加--failfast实现。如:hrun test.yaml --failfast

若需要查看到更详尽的信息,例如请求的参数和响应的详细内容,可以将日志级别设置为DEBUG,即在命令中添加--log-level debug。如:hrun test.yaml --log-level debug

为了方便定位问题,运行测试时可指定 --save-tests 参数,即可将运行过程的中间数据保存为日志文件。

日志文件将保存在项目根目录的 logs 文件夹中,生成的文件有如下三个(XXX为测试用例名称):

  • XXX.loaded.json:测试用例加载后的数据结构内容,加载包括测试用例文件(YAML/JSON)、debugtalk.py、.env 等所有项目文件,例如 test-quickstart-6.loaded.json
  • XXX.parsed.json:测试用例解析后的数据结构内容,解析内容包括测试用例引用(API/testcase)、变量计算和替换、base_url 拼接等,例如 test-quickstart-6.parsed.json
  • XXX.summary.json:测试报告生成前的数据结构内容,例如 test-quickstart-6.summary.json

  3、测试报告

默认情况下,生成的测试报告文件会位于项目根目录的 reports 文件夹中,文件名称为测试开始的时间戳。HttpRunner 中自带了一个 Jinja2 格式的默认报告模版

测试报告形式如下:

在 Summary 中,会罗列本次测试的整体信息,包括测试开始时间、总运行时长、运行的Python版本和系统环境、运行结果统计数据。

在 Details 中,会详细展示每一条测试用例的运行结果。

点击测试用例对应的 log 按钮,会在弹出框中展示该用例执行的详细数据,包括请求的 headers 和 body、响应的 headers 和 body、校验结果、响应、响应耗时(elapsed)等信息。

默认情况下,生成的测试报告文件会位于项目根目录的 reports 文件夹中。如需指定生成报告的路径,可以使用 --report-dir 参数。

如: hrun test.yaml --dirreport-name g:\home

其它高级特性如数据参数化、用例分层、环境变量等用法请参考官网中文手册详细介绍。

  4、创建项目

使用方式也与Django类似,只需要通过--startproject指定新项目的名称即可。如:hrun --startproject httpapidemo

运行后,就会在指定的目录中生成新项目的目录结构,接下来,我们就可以按照测试用例的接口-模块-场景分层原则往里面添加用例描述信息了。

需要注意的是,我们在组织测试用例描述的文件目录结构时,遵循约定大于配置的原则:

  • API接口定义必须放置在api目录下
  • 模块定义必须放置在suite目录下
  • 测试场景文件必须放置在testcases目录下
  • 相关的函数定义放置在debugtalk.py

具体新增用例目录结构例子如下:

2023最新Jmeter接口测试从入门到精通(全套项目实战教程)

 

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

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

相关文章

docker版jxTMS使用指南:使用命令行参数定制启动

本文讲解4.6版jxTMS中的命令行开关,整个系列的文章请查看:4.6版升级内容 docker版本的使用,请查看:docker版jxTMS使用指南 4.0版jxTMS的说明,请查看:4.0版升级内容 4.2版jxTMS的说明,请查看&…

阿里云韩国服务器测试IP地址及公网带宽收费价格表

阿里云服务器韩国(首尔)地域公网带宽价格表,1M带宽价格是23.0元/月,按使用流量1GB价格是0.8元,阿里云韩国服务器测试IP地址:149.129.12.20,阿里云百科aliyunbaike.com来详细说下阿里云韩国服务器…

火伞云Web应用防火墙的特点与优势

在前文中,我们已经介绍了Web应用防火墙(WAF)的基本原理和重要性。接下来,我们将深入探讨火伞云Web应用防火墙的特点与优势,了解它如何为企业提供更为完善和专业的网络安全保障。 一、强大的防御能力 火伞云Web应用防火…

基于MindSpore的llama微调在OpenI平台上运行

基于MindSpore的llama微调在OpenI平台上运行 克隆预训练模型 克隆chatglm-6b代码仓,下载分布式的模型文件 git lfs install git clone https://huggingface.co/openlm-research/open_llama_7b准备环境 安装Transformer pip install transformers执行转换脚本 …

参加CSP-J第一轮后的感受

本人现在初二。作为一名学了4年多c的人,我一直都挺想考过CSP。于是,去年我就去考了。 当时初一,感觉自己实力不够,就只报了J组的。果不其然,63分,没过。 经过1年的苦练,今年又去考了。 J组78分&…

SVN报错fail to run the WC Db work queue associated with,清理失败,乱码的解决方式

替换掉 wc.db 文件即可 SVN报错fail to run the WC Db work queue associated with,清理失败,乱码的解决方式_svn failed to run the wc db-CSDN博客

Python滑动窗口算法:滑动窗口算法(4 by 4 sliding window price)

我知道滑动窗口算法的时间复杂度是 o(N),但是可变大小的滑动窗口算法的时间复杂度是多少。 对于 e- 数组 [1,2,3,4,5,6] 当滑动窗口的大小为 1 时窗口-[1],[2],[3],[4],[5],[6] 当滑动窗口的大小为 2 时窗口-[1,2],[2,3],[3,4],[4,5],…

DamiBus v0.51 发布

DamiBus,专为本地多模块之间通讯解耦而设计(尤其是未知模块、隔离模块、领域模块)。零依赖,特适合 DDD。 特点 结合 Bus 与 RPC 的概念,可作事件分发,可作接口调用,可作响应订阅。 支持事务传…

CSS 复杂卡片/导航栏特效运用目录

主要是记录复杂卡片/导航栏相关的特效实践案例和实现思路。 章节名称完成度难度文章地址完整代码下载地址多曲面卡片实现完成复杂文章链接代码下载倒置边框半径卡片完成一般文章链接代码下载

再谈Java泛型

一.类型参数的约束 我们可以对泛型传进来的参数做一些约束,比如说 用extends表明传进来的参数类型必须是必须是某个类型的子类型或者本身 当然也可以用接口约束,也是用extends表明传进来的参数类型必须实现某个接口。用&连接,注意class…

Leetcode 2905. Find Indices With Index and Value Difference II

Leetcode 2905. Find Indices With Index and Value Difference II 1. 解题思路2. 代码实现 题目链接:2905. Find Indices With Index and Value Difference II 1. 解题思路 这一题我一开始思路有点想复杂了,因为这道题显然是要在index相距特定距离以…

python+深度学习+opencv实现植物识别算法系统 计算机竞赛

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的植物识别算法研究与实现 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:4分工作量:4分创新点:4分 🧿 更多…

论文阅读/写作扫盲

第一节:期刊科普 JCR分区和中科院分区是用于对期刊进行分类和评估的两种常见方法。它们的存在是为了帮助学术界和研究人员更好地了解期刊的学术质量、影响力和地位。 JCR分区(Journal Citation Reports):JCR分区是由Clarivate Ana…

虹科方案 | AR助力仓储物流突破困境:规模化运营与成本节约

文章来源:虹科数字化AR 点击阅读原文:https://mp.weixin.qq.com/s/xis_I5orLb6RjgSokEhEOA 虹科方案一览 HongKe DigitalizationAR 当今的客户体验要求企业在人员、流程和产品之间实现全面的连接。为了提升整个组织的效率并提高盈利能力,物流…

一文解读如何应用 REST 对资源进行访问?

文章目录 一、REST 简介二、涉及注解2.1 RequestMapping2.2 PathVariable2.3 RestController2.4 GetMapping、PostMapping、PutMapping、DeleteMapping补充:PathVariable、RequestBody、RequestParam 区别与应用 三、REST风格案例 一、REST 简介 REST (Representat…

【2023】redis-stream配合spring的data-redis详细使用(包括广播和组接收)

目录 一、简介1、介绍2、对比 二、整合spring的data-redis实现1、使用依赖2、配置类2.1、配置RedisTemplate bean2.2、异常类 3、实体类3.1、User3.2、Book 4、发送消息4.1、RedisStreamUtil工具类4.2、通过延时队列线程池模拟发送消息4.3、通过http主动发送消息 5、&#x1f3…

docker network 组件内网

一、docker network指令详情 以下是一些常用的 Docker 网络管理指令: 列出可用的网络: $ docker network ls 该命令将显示所有可用的 Docker 网络,包括网络 ID、名称、驱动程序和范围等信息。 创建一个网络: $ docker network …

UWB承启定位基站

UWB承启定位基站 随着我们使用UWB做超高精度的定位项目越来越多,我们发现之前的定位基站完全站在二维或三维的角度去设计还是存在对应的缺陷,这个时候需要在很短的距离内安装多一个基站,对于用户来说,会觉得设备变多了&#xff0…

多目标鳟海鞘算法(Multi-objective Salp Swarm Algorithm,MSSA)求解微电网优化MATLAB

一、微网系统运行优化模型 微电网优化模型介绍: 微电网多目标优化调度模型简介_IT猿手的博客-CSDN博客 参考文献: [1]李兴莘,张靖,何宇,等.基于改进粒子群算法的微电网多目标优化调度[J].电力科学与工程, 2021, 37(3):7 二、多目标鳟海鞘算法MSSA 多…

多线程并发篇---第十一篇

系列文章目录 文章目录 系列文章目录前言一、CAS的原理二、CAS有什么缺点吗?三、引用类型有哪些?有什么区别?前言 一、CAS的原理 CAS叫做CompareAndSwap,比较并交换,主要是通过处理器的指令来保证操作的原子性,它包含 三个操作数: 变量内存地址,V表示旧的预期值,A表示…