html请求接口_Python 如何使用 HttpRunner 做接口自动化测试
点击上方“AirPython”,选择“加为星标”
第一时间关注 Python 原创干货!
1. 前言
原始测试金子塔包含 3 层,分别是:UI 自动化测试、接口服务测试、单元测试
其中,
单元测试是对软件的最小可测试单元进行检查和验证,也是产生效率最大的一项测试
接口服务测试分为模块接口测试和协议接口测试
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 文件
第二步:转为测试用例
使用 har2case 命令将 HAR 文件转换为测试用例,V3 版本默认生成测试用例格式为 Py 文件
查看测试用例后发现,HttpRunner 自动生成的测试用例结构十分清晰,二次修改也非常方便
第三步,运行测试用例
使用 hrun 命令运行测试用例,另外,加上 --html 参数,可以在本地生成测试报告
# 生成测试报告hrun demo_test.py --html=report.html
打开测试报告,可以查看测试用例的执行结果及日志
5.脚手架
HttpRunner 同样提供了脚手架,方便我们快速创建标准化项目
# 使用脚手架创建一个项目httprunner startproject demo
生成项目的目录结果如下:
其中,
1、debugtalk.py
一般用于自定义 Python 函数,方便测试用例调用
比如:某个请求参数需要通过一段加密逻辑生成,这时可以自定义一个函数写在 debugtalk.py 文件中
2、har
从抓包工具、Postman、浏览器保存的网络请求
3、reports
生成测试报告的目录
需要指出的是,除了使用自带的 pytest-html 插件生成测试报告,HttpRunner 还可以通过 allure 生成功能更加强大的测试报告
4、testcases
用于放置测试用例
使用 hrun 命令可以直接运行脚手架项目
# 运行脚手架项目# hrun 项目名称hrun demo
6.最后
受限于篇幅,上面仅仅介绍了 HttpRunner 最基本的使用方法
HttpRunner 更加复杂的功能,我已经在官方文档的基础上,整理出了一个详细的操作手册,关注公众号后回复「 HR 」即可获取
如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!
留言送书本周赠书:《深入浅出Python机器学习》PS:中奖名单将于下周一在交流群公布本书内容涵盖了有监督学习、无监督学习、模型优化、自然语言处理等机器学习领域所必须掌握的知识,从内容结构上非常注重知识的实用性和可操作性。全书采用由浅入深、循序渐进的讲授方式,完全遵循和尊重初学者对机器学习知识的认知规律。推荐阅读带你用 Python 实现自动化群控(入门篇)这些自动化场景,批处理完全可以取代 Python抖音超火的九宫格视频是如何生成的,Python 告诉你答案
AirPython 公众号的交流群已经建立,群里可以领取 Python 相关学习资料,大家可以一起学习交流,效率更高,如果是想发推文、广告、砍价小程序的敬请绕道!一定记得备注「 交流群 」,不然不会通过好友
html请求接口_Python 如何使用 HttpRunner 做接口自动化测试相关推荐
- python runner功能_Python 如何使用 HttpRunner 做接口自动化测试
点击上方"软测小生",选择"加为星标" 第一时间关注软件测试原创干货! 1. 前言 原始测试金子塔包含 3 层,分别是:UI 自动化测试.接口服务测试.单元测试 ...
- 转为yaml python_python 如何使用HttpRunner做接口自动化测试
作者:星安果 来源:AirPython 1. 前言 原始测试金子塔包含 3 层,分别是:UI 自动化测试.接口服务测试.单元测试 其中, 单元测试是对软件的最小可测试单元进行检查和验证,也是产生效率最 ...
- python创建api接口_Python调用飞书API接口
知乎文章若有排版问题请见谅,原文放在个人博客中[欢迎互踩!] 写在最前 飞书作为一款高效远程办公软件,在疫情期间凭借着人性化的UI交互以及稳定的远程联络能力深得各大企业的偏好.但在创建团队之初,难免遇 ...
- python 知乎接口_Python日记——用Django做一个简易的知乎日报API
为什么我要选择django做生成api的框架 因为其内置的orm简单易用 生成restful的api要配合rest_framework使用 文档地址:https://darkcooking.gitbo ...
- python股票接口_Python 从 sina 股票数据接口读取数据,并保存到 MySQL 数据库
说明 从 sina 的数据接口获取数据,之后,保存到 MySql 数据库 文件:getDataFromSina.py ''' Created on 2018年2月11日 @author: Livon ...
- python测试rpc接口_python使用grpc调用rpc接口
#Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! importgrpcimportcoupon_pb2 as c ...
- 一、为什么要做接口自动化,怎样做
目录 为什么要做接口自动化,怎样做 一.为什么要做接口自动化 二.了解一波接口 2.1 什么是接口 2.2 常用接口 2.3 http登录接口文档范例 2.4 获取接口关键信息 三.什么项目适合做接口 ...
- python写后台接口请求出错_python登录接口测试问题记录与解决
最近做一个登录接口测试中,发现了以下的一些场景,本次将所遇到的问题以及解决过程做下记录: 1.抓包发现登录操作时,先后请求三个接口,并且每个接口有关联 2.每次请求都需要保留cookie信息,下个接口 ...
- python做接口自动化测试仪器经销商_Python接口自动化测试的实现
接口测试的方式有很多,比如可以用工具(jmeter,postman)之类,也可以自己写代码进行接口测试,工具的使用相对来说都比较简单,重点是要搞清楚项目接口的协议是什么,然后有针对性的进行选择,甚至当 ...
- 【Node基础入门】----node中间层做接口转发,实现跨域请求
前言: 起因,接手了一个四年前的老项目(2018年的),项目是前后端分离,并且是由前端用node解决的跨域问题.一个node小白,为了更好的了解项目的搭建以及线上部署,无奈踏上node的学习之 ...
最新文章
- linux vim配置注释,vim自动添加注释
- rails 常用方法
- 桥接路由器总是掉线_光猫集成了路由功能,路由器的路由功能会多余吗?
- Silverlight3 Tools Download link
- Redis源码剖析(八)链表
- 对几种二叉树的简单理解
- python字典长度可变吗_Python字典dict实现原理
- 句句真研—每日长难句打卡Day2
- 单例模式(七种实现方法)
- CSRF - 跨站请求伪造
- qt 设置按钮大小_QT使用教程(四)之初体验
- 彻底删除linux mbr,如何删除mbr分区表(超详细介绍Linux管理分区技巧)
- html设置尖角,CSS为div添加尖角样式
- 学习在html网页中打开展示pdf文件
- 执节歌者 · 箫谱1
- 矩阵的求逆:inv( )
- 有位置,来,搬个小板凳,喝酒听故事!
- 更改Ubuntu软件镜像为清华镜像
- 音调识别 php,PHP 汉字转拼音工具
- 为什么要写单元测试?如何写单元测试?
热门文章
- [2018.10.10 T1] 餐馆
- vue3初探-工程化项目架构-笔记
- 利用wordpress搭建自己的网站(百度云虚拟主机)
- promise入门的准备工作-(尚硅谷教程笔记)
- python查找客户总金额_如何使用python中的spark查找每个月的总金额
- linux single 禁用显卡,告诉你Ubuntu下禁用独显的方法及命令
- android studio 工程rebuild没反应,Andriod Studio Clear Project或Rebuild Project出错
- Introduction to Computer Networking学习笔记(二十四):拥塞控制 TCP Reno
- 测试mysql主从_MySQL主从介绍、配置主从、测试主从同步
- iOS:SideTable