一、介绍
1.1、简介:
HttpRunner是一款面向http(s)协议的通用测试框架,只需要编写一份可维护的YAML/JSON脚本,即可实现自动化测试,性能测试,线上监控,持续集成等多种测试需求。
1.2、测试框架理念:
◈充分复用优秀的开源项目,不追求重复造轮子,而是将轮子组成战车。
◈遵循 约定大于配置 的准则,在框架功能中融入自动化测试最佳工程实践
◈追求投入产出比,一份投入即可满足多种测试需求
1.3、核心特点
- 继承 Requests 的全部特性,轻松实现 HTTP(S) 的各种测试需求
- 采用
YAML/JSON
的形式描述测试场景,保障测试用例描述的统一性和可维护性 - 借助辅助函数(debugtalk.py),在测试脚本中轻松实现复杂的动态计算逻辑
- 支持完善的测试用例分层机制,充分实现测试用例的复用
- 测试前后支持完善的 hook 机制
- 响应结果支持丰富的校验机制
- 使用 jmespath,提取和验证 json 响应从未如此简单
- 使用 pytest,数百个插件可供使用
- 基于 HAR 实现接口录制和用例生成功能(har2case)
- 结合 Locust 框架,无需额外的工作即可实现分布式性能测试
- 执行方式采用 CLI 调用,可与 Jenkins 等持续集成工具完美结合
- 测试结果统计报告简洁清晰,附带详尽统计信息和日志记录
- 采用 allure,可以生成美观且强大的测试报告
二、安装和部署
HttpRunner使用python开发,它支持python3.6+和大多数操作系统。
2.1、安装
1.直接使用pip安装
>pip3 install httprunner
2.如需使用最新版本,可以使用gitlub仓库的url安装
>pip3 install git+https://github.com/httprunner/httprunner.git@master
3.如果已安装过,可以使用-U升级
>pip3 install -U httprunner
>pip3 install -U git+https://github.com/httprunner/httprunner.git@master
2.2、检查是否安装成功
-V 大写的V
三、搭建项目
3.1、快速生成项目
httprunner startproject 项目名称
httprunner startproject这个命令跟django里的django-admin.py startproject project_name 很像,没错,其实httprunner的想法正式来源于django,这就是httprunner作为一个优秀开源技术资源整合和复用的体现之一。
3.2、项目结构梳理
我把生成出的项目丢到vscode里方便查看,可以看的生成的目录结构如下图,那么这些都是什么意思呢?
◈debugtalk.py 放置在项目根目录下(借鉴了pytest的conftest文件的设计)
◈.env 放置在项目根目录下,可以用于存放一些环境变量
◈reports 文件夹:存储 HTML 测试报告
◈testcases 用于存放测试用例
◈har 可以存放录制导出的.har文件
◈具体用法会在后续中细讲,本章不展开。我们可以点开生成的testcases文件夹下的测试用例,里面是提供了一个可运行的demo内容的,那先来运行一下看看。
>hrun hr_demo
可以看到两个测试用例运行成功,前期准备工作结束。
四、录制生成测试用例
4.1、使用har2case录制
比如百度首页的请求
首先抓包,可以使用fiddler,charles,浏览器F12等等。
Fiddler:选中请求,点击左上角的File——Export Sessions——(可以选择导出选中的也可以导出所有),这里我们选择导出选中的,导出HTTPArchive,文件名baidu_home.har,保存到了项目的har目录下。
F12:
导出har文件到hr_demo下的har文件夹中:
4.2、转换pytest文件
运行命令将har文件转换成测试用例:
>har2case baidu.har
生成完毕,在har目录下可以看到生成出的python文件:
因为httprunner封装了pytest,所有既可以用hrun去运行,也可以用pytest去运行。
hrun:
pytest:
4.3、转换为YAML/JSON
很简单,只要在命令后面多加对应的参数就行了。-2y/--to-yml 或者 -2j/--to-json
转换为YAML:
转换为JSON:
看看生成的文件:
五、报告生成
5.1、HTML report
> hrun /path/to/testcase --html=report.html
查看html测试报告
5.2、allure report
执行测试,收集结果
生成报告,查看报告