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

2023-12-13 18:32:42
简介

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年最全的软件测试工程师学习知识架构体系图】


一、Python编程入门到精通


二、接口自动化项目实战??

三、Web自动化项目实战


四、App自动化项目实战?

五、一线大厂简历


六、测试开发DevOps体系?

七、常用自动化测试工具


八、JMeter性能测试?

九、总结(尾部小惊喜)

生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!

生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!

只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到!

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!?

文章来源:https://blog.csdn.net/2301_78276982/article/details/134896162
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。