您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > Python

python 如何使用HttpRunner做接口自动化测试

时间:2020-09-17 14:52:05  来源:  作者:
python 如何使用HttpRunner做接口自动化测试

 

作者:星安果

来源:AirPython/ target=_blank class=infotextkey>Python

 

1. 前言

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

python 如何使用HttpRunner做接口自动化测试

 

其中,

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

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

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 文件

python 如何使用HttpRunner做接口自动化测试

 

第二步:转为测试用例

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

python 如何使用HttpRunner做接口自动化测试

 

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

python 如何使用HttpRunner做接口自动化测试

 

第三步,运行测试用例

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

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

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

python 如何使用HttpRunner做接口自动化测试

 

5.脚手架

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

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

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

python 如何使用HttpRunner做接口自动化测试

 

其中,

1、debugtalk.py

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

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

2、har

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

3、reports

生成测试报告的目录

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

4、testcases

用于放置测试用例

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

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

6.最后

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

python 如何使用HttpRunner做接口自动化测试

 



Tags:HttpRunner   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
先来个小故事:一天,你的领导丢给你几十个接口,然后希望你输出报告。你:"exm?",改改改。于是你引入了unittest单元测试框架、HTMLTestRunner等等。正打算将各个测试用例分类重新规...【详细内容】
2020-11-04  Tags: HttpRunner  点击:(154)  评论:(0)  加入收藏
作者:星安果来源:AirPython 1. 前言原始测试金子塔包含 3 层,分别是:UI 自动化测试、接口服务测试、单元测试 其中,单元测试是对软件的最小可测试单元进行检查和验证,也是产生效...【详细内容】
2020-09-17  Tags: HttpRunner  点击:(616)  评论:(0)  加入收藏
▌简易百科推荐
近几年 Web3 被炒得火热,但是大部分人可能还不清楚什么是 Web3,今天就让w3cschool编程狮小师妹带你了解下 Web3 是什么?与我们熟知的 Web1 和 Web2 又有什么区别呢?web3.0什么是...【详细内容】
2022-07-15  编程狮W3Cschool    Tags:Web3.0   点击:(2)  评论:(0)  加入收藏
1、让我们一起来看下吧,直接上图。 第一眼看到是不是觉得很高逼格,暗黑画风,这很大佬。其实它就是------AidLearning。一个运行在安卓平台的linux系统,而且还包含了许多非常强大...【详细内容】
2022-07-15  IT智能化专栏    Tags:AidLearning   点击:(2)  评论:(0)  加入收藏
真正的大师,永远都怀着一颗学徒的心! 一、项目简介 今天说的这个软件是一款基于Python+vue的自动化运维、完全开源的云管理平台。二、实现功能 基于RBAC权限系统 录像回放 ...【详细内容】
2022-07-14  菜鸟程序猿    Tags:Python   点击:(3)  评论:(0)  加入收藏
前言今天笔者想和大家来聊聊python接口自动化的MySQL数据连接,废话不多说咱们直接进入主题吧。 一、什么是 PyMySQL?PyMySQL是在Python3.x版本中用于连接MySQL服务器的一个库,P...【详细内容】
2022-07-11  测试架构师百里    Tags:python   点击:(19)  评论:(0)  加入收藏
aiohttp什么是 aiohttp?一个异步的 HTTP 客户端\服务端框架,基于 asyncio 的异步模块。可用于实现异步爬虫,更快于 requests 的同步爬虫。安装pip install aiohttpaiohttp 和 r...【详细内容】
2022-07-11  VT漫步    Tags:aiohttp   点击:(15)  评论:(0)  加入收藏
今天我们学习下 Queue 的进阶用法。生产者消费者模型在并发编程中,比如爬虫,有的线程负责爬取数据,有的线程负责对爬取到的数据做处理(清洗、分类和入库)。假如他们是直接交互的,...【详细内容】
2022-07-06  VT漫步    Tags:Python Queue   点击:(34)  评论:(0)  加入收藏
继承:是面向对象编程最重要的特性之一,例如,我们每个人都从祖辈和父母那里继承了一些体貌特征,但每个人却又不同于父母,有自己独有的一些特性。在面向对象中被继承的类是父类或基...【详细内容】
2022-07-06  至尊小狸子    Tags:python   点击:(25)  评论:(0)  加入收藏
点击上方头像关注我,每周上午 09:00准时推送,每月不定期赠送技术书籍。本文1553字,阅读约需4分钟 Hi,大家好,我是CoCo。在上一篇Python自动化测试系列文章:Python自动化测试之P...【详细内容】
2022-07-05  CoCo的软件测试小栈    Tags:Python   点击:(27)  评论:(0)  加入收藏
第一种方式:res = requests.get(url, params=data, headers = headers)第二种方式:res = requests.get(url, data=data, headers = headers)注意:1.url格式入参只支持第一种方...【详细内容】
2022-07-05  独钓寒江雪之IT    Tags:Python request   点击:(19)  评论:(0)  加入收藏
什么是python类的多态python的多态,可以为不同的类实例,或者说不同的数据处理方式,提供统一的接口。用比喻的方式理解python类的多态比如,同一个苹果(统一的接口)在孩子的眼里(类实...【详细内容】
2022-07-04  写小说的程序员    Tags:python类   点击:(28)  评论:(0)  加入收藏
相关文章
    无相关信息
站内最新
站内热门
站内头条