HttpRunner 接口自动化测试框架实战,打造高效测试流程

news2024/11/26 17:16:56

简介

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

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

如果你想学习APP自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的接口测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386 

HttpRunner使用高效实现接口自动化测试_哔哩哔哩_bilibiliHttpRunner使用高效实现接口自动化测试共计9条视频,包括:1、接口自动化之什么是HttpRunner、2、接口自动化之设计思想和理念、3、接口自动化之HttpRunner环境搭建等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1F64y127T5/?spm_id_from=333.337.search-card.all.click

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

从上图可知,技术选型一般会优先考虑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

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

 

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

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

相关文章

Tree of Thoughts: Deliberate Problem Solving with Large Language Models

思维树:用大模型深思熟虑的解决问题 Tree of Thoughts: Deliberate Problem Solving with Large Language Models概述:核心思想:背景:IO promptingCoTCoT-SC 算法流程:主要实验对象:24点游戏创意写作填字游…

Linux5.3 Haproxy搭建Web群集

文章目录 计算机系统5G云计算第四章 LINUX Haproxy搭建Web群集一、Keepalived 概述1. HAProxy的主要特性2.常见的 Web 集群调度器3.HAProxy负载均衡策略4.LVS、Nginx、HAproxy的区别 二、Haproxy搭建 Web 群集 Keepalived部署高可用集群1.haproxy 服务器部署,配置负…

Linux shell脚本命令记录

1、cut cut 命令可以从一个文本文件或者文本流中提取文本列。 选项与参数: -d :后面接分隔字符。与 -f 一起使用; -f :依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思; -c &#x…

如何进行App性能测试?iTest工具助力你轻松实现!

目录 引言 功能简介 基本功能使用说明 其它功能 iTest数据上传功能 iTest使用注意事项 引言 如何使用iTest工具进行App性能测试。 在如今这个高度竞争的移动应用市场中,用户对于应用程序的体验需求越来越高,而良好的性能表现则是实现这一目标的关…

CleanMyMac X 4.13.4 Mac系统老牌清洁工具大测评-功能、优缺点盘点

CleanMyMac X 4.13.4 for Mac 是一款可靠且功能强大的Mac清洁工具工具,他可以让你随时检查Mac电脑的健康情况,并删除电脑中的垃圾文件,来腾出存储空间,保持Mac系统的整洁。至问世以来,CleanMyMac 系统倍受国内外用户推…

SpringBoot 源码分析刷新应用上下文(3)-refreshContext

一:入口 /*** Run the Spring application, creating and refreshing a new* {link ApplicationContext}.* param args the application arguments (usually passed from a Java main method)* return a running {link ApplicationContext}*/public ConfigurableAp…

高阶复杂网络重建:从时间序列中重建高阶网络

论文链接:https://www.nature.com/articles/s41467-022-30706-9 一、为什么要研究高阶网络? 复杂网络跟我们生活息息相关,例如社交网络的信息传播,疾病的感染扩散和基因调控网络的相互作用等。越来越多的研究突破了传统网络中两…

SSH暴力破解

Linux是开源系统,系统本身因漏洞造成的攻击相对比较少,主要集中在SSH攻击; SSH所采用的加密机制,可以防止数据传输过程中信息泄露; SSH基于用户名密码的身份验证,容易遭受密码暴力破解攻击; S…

上海交通大学计算机考研分析

关注我们的微信公众号 姚哥计算机考研 更多详情欢迎咨询 上海交通大学(A)考研难度(☆☆☆☆☆) 上海交通大学电子信息与电气工程学院的前身可溯源至1908年的电机专科,享有中国电气工程师“摇篮”的美称,…

远程线程注入之突破Session0隔离会话

前言 当我们使用远程线程注入将dll注入至系统服务进程中往往会失败,这是因为大多数系统服务都是在Session0中运行的 "Session 0"是Windows操作系统中的一个特殊的会话,专门用于运行系统服务和其他在用户登录之前就需要运行的程序。从Windows…

卷积神经网络CNN(第三次组会)

卷积神经网络 1. 为什么用卷积2. 两个原则3. 参数理解4. 理解卷积 1. 为什么用卷积 2. 两个原则 3. 参数理解 4. 理解卷积

Proteus仿真之IIC通信(AT24C02)

1.IIC通信简介:IIC是一种利用时钟线SCL和数据线SDA进行数据传输的通信协议。IIC的时序图如下所示: 我们需要看懂时序图中开始信号、数据传输、应答信号和停止信号。 开始信号:SCL为高电平时,SDA出现下降沿信号。 数据传输&#…

c++类和对象(封装)

4、类和对象 C面向对象的三大特性为:封装、继承、多态 C认为万事万物都皆为对象,对象上有其属性和行为 例如: 人可以作为对象,属性有姓名、年龄、身高、体重...,行为有走、跑、跳、吃饭、唱歌...车也可以作为对象,属性…

python带你制作自动点赞小程序,让我看看谁还在呆呆的手动点赞

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 知识点: 动态数据抓包 requests发送请求 开发环境: 代码所使用软件工具: python 3.8 >>>>>> 运行代码 pycharm 2022.3 >>>>>> 辅助敲代码 需下载的第三方模块&a…

【微信公众平台对接】有关上传pdf到微信

1、微信文档说明 ps:有关微信的一些文档说明我真的是服了,这个文档,抛出来看的人真的是一头雾水,算了,我也不做过多评判;下面看我调用的示例代码 2、示例代码 /*** 上传pdf* https://api.weixin.qq.com/card/invoice…

HTML+CSS实训——Day13——学习MySQL

前言 已经过去三周了,现在是第四周,之前所有的数据都是在本地的,还没有学到数据库,这周开始使用数据库了。 我自用的是navicat 连接服务器 我们新建一个连接,写上主机和端口号,再写上用户名和密码就可以…

【新版】系统架构设计师 - 计算机系统基础知识【补充】

个人总结,仅供参考,欢迎加好友一起讨论 文章目录 架构 - 计算机系统基础知识【补充内容】计算机语言多媒体系统工程霍尔的三维结构切克兰德方法并行工程方法综合集成法WSR(物理-事理-人理)系统方法系统工程生命周期7阶段生命周期方…

23年软件测试前景和出路?新人入行测试怎样走“正确“的路...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 现在面试&#xf…

Java IO 学习总结(一)输入流/输出流

前言: 学习IO流,记录并分享。文章如有错误,恳请指正。 Java IO流的类图: 1、什么是 Java IO 流? 数据传输是需要通道的,而IO流就是数据传输的通道。IO流可以形象比喻为运送货物的传输带。运送的货物就是…

电子蜡烛灯单片机开发方案

LED蜡烛灯可以像真正的蜡烛一样发出舒适的闪烁光,具有仿真蜡烛效果,适合在一些聚会或庆祝活动中使用。宇凡微推出的低成本LED蜡烛灯IC方案,根据不同电子蜡烛灯方案,主控芯片推荐使用YF单片机。 LED蜡烛灯是有孩子的家庭很好蜡烛替…