热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

html请求接口_Python如何使用HttpRunner做接口自动化测试

点击上方“AirPython”,选择“加为星标”第一时间关注Python原创干货!1.前言原始测试金子塔包含3层,分别是:U

点击上方“AirPython”,选择“加为星标”

第一时间关注 Python 原创干货!

79d801311be356788f32b8070fec5cad.png

1. 前言

原始测试金子塔包含 3 层,分别是:UI 自动化测试、接口服务测试、单元测试

6319e92d31153c47896ec5c987823667.png

其中,

单元测试是对软件的最小可测试单元进行检查和验证,也是产生效率最大的一项测试

接口服务测试分为模块接口测试和协议接口测试

UI 测试主要是为了取代人力操作,通过 UI 自动化去模拟操作,降低回归测试的成本

考虑到投入产出率,大部分企业都会将测试重点放在接口自动化测试这一项上

接口自动化主流方案包含:Python + Pytest/Unittest、Java + TestNG、Postman、HttpRunner、Postman、Jmeter、RobotFramework 等

本篇文章将和大家一起聊聊 HttpRunner 做接口自动化的流程

2.介绍及安装

HttpRunner 是一款完全由 Python 语言编写的测试框架,并且简单、优雅、功能强大,同时支持 HTTP 和 HTTPS

HttpRunner 主要包含下列特征:

  • 继承 Requests 库的全部特性,轻松实现 HTTP(S) 的各种测试需求

  • 以 YAML 和 JSON 定义测试用例,通过 pytest 去运行

  • 基于 HAR 文件,实现接口的录制及用例的生成功能

  • 支持 variables、extract、validate、hook 等关键字,可以创建复杂的测试场景

  • 借助辅助插件 debugtalk.py,在测试脚本中轻松实现复杂的动态计算逻辑

  • 集成 jmespath,方便提取变量、验证 JSON 响应

  • 集成 pytest,支持大量的插件

  • 集成 allure 生成强大的测试报告

  • 集成 locust,非常方便做性能测试

  • 执行方式采用 CLI 调用形式,可以和 Jenkins 等持续集成工具完美结合

使用 pip 安装 HttpRunner 稳定版本

# 安装 HttpRunner 稳定版本
pip3 install httprunner

需要指出的是,HttpRunner V3 版本对比 V2 版本进行了大量优化,特别是测试用例的表现形式,强烈建议安装 V3 版本

3.常见命令

安装完 HttpRunner 之后,就可以使用下面几个命令了

1、hrun

HttpRunner 最主要的命令,主要作用是运行 Py/YAML/JSON 格式的测试用例

2、hmake

将 YAML/JSON 格式的测试用例转换为 Python 文件

ps:HttpRunner V3 以 Python 文件保存测试用例,V2 之前是以 JSON/YAML 格式保存测试用例

3、har2case

har2case 作用是将 HAR 格式的请求文件转为 YAML/JSON/Py 格式的测试用例

ps:一般网络请求都可以直接以 AHR 格式保存到本地

4、locusts

HttpRunner 集成了 locusts 命令,可以利用它直接进行性能测试

5、其他命令

另外,通过 httprunner -h 命令可以查看帮助;使用 httprunner -V 命令可以查看 HttpRunner 的版本信息

4.小试牛刀

先通过一个简单的接口聊聊 HttpRunner 的使用步骤

目标接口 - GET:

https://postman-echo.com/get?foo1=bar1

第一步:抓包,保存为 HAR 文件

打开 Charles 或 Fiddler,配置 Chrome 浏览器的代理, 使 Charles 可以对浏览器进行抓包

使用 Chrome 访问这个接口地址,模拟一次请求,然后在 Charles 中找到对应的请求,右键保存为 HAR 文件

46084d1ca1b8fe826d73cd11d7190301.png

第二步:转为测试用例

使用 har2case 命令将 HAR 文件转换为测试用例,V3 版本默认生成测试用例格式为 Py 文件

456e3aec74bc06aac514cfe757476a30.png

查看测试用例后发现,HttpRunner 自动生成的测试用例结构十分清晰,二次修改也非常方便

8d1f1a83dd655c2023e29294aa4931ff.png

第三步,运行测试用例

使用 hrun 命令运行测试用例,另外,加上 --html 参数,可以在本地生成测试报告

# 生成测试报告
hrun demo_test.py --html=report.html

打开测试报告,可以查看测试用例的执行结果及日志

c35150b0c6af11e63a656ae48c3989b1.png

5.脚手架

HttpRunner 同样提供了脚手架,方便我们快速创建标准化项目

# 使用脚手架创建一个项目
httprunner startproject demo

生成项目的目录结果如下:

62bb4fb2afc4ae09baf5328fc4a267dc.png

其中,

1、debugtalk.py

一般用于自定义 Python 函数,方便测试用例调用

比如:某个请求参数需要通过一段加密逻辑生成,这时可以自定义一个函数写在 debugtalk.py 文件中

2、har

从抓包工具、Postman、浏览器保存的网络请求

3、reports

生成测试报告的目录

需要指出的是,除了使用自带的 pytest-html 插件生成测试报告,HttpRunner 还可以通过 allure 生成功能更加强大的测试报告

4、testcases

用于放置测试用例

使用 hrun 命令可以直接运行脚手架项目

# 运行脚手架项目
# hrun 项目名称
hrun demo

6.最后

受限于篇幅,上面仅仅介绍了 HttpRunner 最基本的使用方法

628967d76dfd8d6b59a31b40952ae715.png

HttpRunner 更加复杂的功能,我已经在官方文档的基础上,整理出了一个详细的操作手册,关注公众号后回复「 HR 」即可获取

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

留言送书本周赠书:《深入浅出Python机器学习PS:中奖名单将于下周一在交流群公布本书内容涵盖了有监督学习、无监督学习、模型优化、自然语言处理等机器学习领域所必须掌握的知识,从内容结构上非常注重知识的实用性和可操作性。全书采用由浅入深、循序渐进的讲授方式,完全遵循和尊重初学者对机器学习知识的认知规律。推荐阅读带你用 Python 实现自动化群控(入门篇)这些自动化场景,批处理完全可以取代 Python抖音超火的九宫格视频是如何生成的,Python 告诉你答案

AirPython 公众号的交流群已经建立,群里可以领取 Python 相关学习资料,大家可以一起学习交流,效率更高,如果是想发推文、广告、砍价小程序的敬请绕道!一定记得备注「 交流群 」,不然不会通过好友

a16920fed81123dafd9b7a26d827be3a.png


推荐阅读
  • 本文详细介绍了如何使用Python编写爬虫程序,从豆瓣电影Top250页面抓取电影信息。文章涵盖了从基础的网页请求到处理反爬虫机制,再到多页数据抓取的全过程,并提供了完整的代码示例。 ... [详细]
  • 本文介绍如何使用 Python 将一个字符串按照指定的行和元素分隔符进行两次拆分,最终将字符串转换为矩阵形式。通过两种不同的方法实现这一功能:一种是使用循环与 split() 方法,另一种是利用列表推导式。 ... [详细]
  • QBlog开源博客系统:Page_Load生命周期与参数传递优化(第四部分)
    本教程将深入探讨QBlog开源博客系统的Page_Load生命周期,并介绍一种简洁的参数传递重构方法。通过视频演示和详细讲解,帮助开发者更好地理解和应用这些技术。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • Java 中 Writer flush()方法,示例 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • python的交互模式怎么输出名文汉字[python常见问题]
    在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就进入到Python交互模式,它的提示符是>>>,此时我们可以使用print() ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • 本文总结了汇编语言中第五至第八章的关键知识点,涵盖间接寻址、指令格式、安全编程空间、逻辑运算指令及数据重复定义等内容。通过详细解析这些内容,帮助读者更好地理解和应用汇编语言的高级特性。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文介绍了在安装或运行 Python 项目时遇到的 'ModuleNotFoundError: No module named setuptools_rust' 错误,并提供了解决方案。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 探讨一个显示数字的故障计算器,它支持两种操作:将当前数字乘以2或减去1。本文将详细介绍如何用最少的操作次数将初始值X转换为目标值Y。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
author-avatar
qa32qw51
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有