一、前言
本系列专栏的开始,由以下几个问题引入:
1.什么是接口?
2.什么是接口测试?
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
a) 如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,接口测试可以提供这种情况下的解决方案。
b) 接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。接口持续集成是为什么能低成本高收益的根源。
c) 现在很多系统前后端架构是分离的,从安全层面来说:
1、只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。
2、前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。
接口测试测什么?
3.为什么要做接口自动化测试?
1,为什么要做自动化?
代替手工重复操作,测试工程师可以花更多时间在设计全面的测试用例和新功能测试上 【代替手工重复】
提升回归测试的效率,适合敏捷开发过程 【提升回归效率】
更好的利用非工作时间执行测试,工作时间分析失败用例 【利用非工作时间测试】
高效实现某些手工测试无法完成或代价巨大的测试类型,比如:关键业务7*24小时持续运行的系统稳定性测试和高并发场景的压力测试 【代替复杂手工测试和长时间测试】
还可以保证每次测试执行的步骤以及验证的一致性和可重复性,避免人为的遗漏或疏忽 【保证操作一致性,结果可溯源】
2,为什么做接口自动化?(与ui自动化对比)
项目适合?
更容易实现持续集成
自动化测试落地性价比高,比UI更稳定
大型系统更多更复杂,系统间模块越来越多
BUG更容易定位
降低研发成本,提高效率
4.接口测试工具如何选择?
二、httprunner简介
1.什么是httprunner?
HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型。简单易用,功能强大,具有丰富的插件化机制和高度的可扩展能力。
2.httprunner的设计理念
1.充分复用开源项目,不追求重复的造轮子,而是将市面强大的轮子转成战车,降低框架的 开发成本以及学习成本。
2.遵循约定大于临时配置的准则。
3.配置文件组织测试用例。
3.httprunner的版本选择
- HttpRunner 经过近 5 年的迭代,已经进入到 v4.0 版本了,但是4.x版本还有没有比较成熟的使用案例参考,后续所有文档基于3.x进行。想学习4.x的可以参考官方文档,接口自动化部分与3.x无异,主要是强化了性能测试方面的功能
- v4 与历史版本的对比,通过如下表格,可详细了解各个版本间的关键差异点。
注:v4 中 斜体 代表当前还未支持,但计划会实现。
- 从上面的表格可以看出,HttpRunner v4 颇有点金刚葫芦娃的意思,囊括了之前所有版本的功能,并且增加了很多新特性。
- HttpRunner v4 = v2 + v3 + hrp + …
- 在使用体验和用例格式兼容性方面,v4 也会与之前的 v2/v3/hrp 做到兼容,因此后续 HttpRunner 的维护工作都将转到 v4 版本,之前的版本将不再单独维护。
- v4 版本的 Go & Python 功能对比
HttpRunner v4.0 同时采用了 Golang/Python 两种编程语言,底层会有两套相对独立的执行引擎,目标是兼具 Golang 的高性能和 pytest 的丰富生态。
三、httprunner安装及环境搭建
1.依赖:HttpRunner使用python开发,支持Python 3.6+和大多数操作系统。 在Python 3.6/3.7/3.8上 和 MacOS/Linux/Windows上,基于GitHub-Actions 上进行了测试。
2.安装httprunner
- HttpRunner存储于PyPI, 支持通过pip安装:`
pip3 install httprunner
当前httprunner已经升级至httprunner4.x,直接使用pip安装会安装成V4版本,建议使用:
pip3 install httprunner==3.1.4
可能有人会问,直接安装最新版本不好吗?答:年轻人hold不住的
- 如果你想保持最新版本,可用github资源地址安装.
pip3 install git+https://github.com/httprunner/httprunner.git@master
- 如果你之前已安装过HttpRunner,想更新到最新版本,可以使用-U选项:
pip3 install -U httprunne
pip3 install -U git+https://github.com/httprunner/httprunner.git@master
- 安装完查看版本:
httprunne -V
3.常用命令
- httprunner:主命令,用于所有功能
- -V:查看版本
- -h:帮助
- 待补充
- hrun:用于运行yaml/json/pytest测试用例。
- hmake:用于将yaml/json测试用例转化成pytest文件。
- har2case:用于将har文件转化成yaml/json/pytest测试用例。
- locusts用于性能测试
四、httprunner的简单使用
环境安装好之后,就可以开始尝试来编写第一个测试脚本了:
1.快速生成脚手架
(1).生成脚手架命令
httprunner startproject [-h] [project_name]
-h, --help 展示帮助信息并退出
project_name 指定新的项目名称
例如:httprunner startproject -h test_demo
(2)查看脚手架目录
脚手架项目有几个有效的测试用例,所以可以无需编辑直接运行,执行命令:hrun test_demo
- 自动生成的文件目录结构:
- 完整的项目文件目录结构:
2.录制生成用例
(1)抓包请求
- 写用例之前,我们应该熟悉API的详细信息。建议使用抓包工具Charles或AnyProxy进行抓包
(2)导出HAR文件 - 选择抓包捕获的请求和响应,并将会话导出到Har文件
(3)使用har2case命令生成测试用例 - HttpRunner 3.0.7版本开始,har2case将HAR文件默认转换成pytest,强烈建议以pytest格式而不是以前的YAML / JSON格式编写和维护测试用例。
- 来到har文件所在目录,执行:
har2case ./har/xxx.har
(3)查看测试用例
har2case命令执行完后,若执行成功最后会有以下提示:
reformatted 后面的路径就是生成的pytest格式的测试用例。
3.用例格式转换
脚本格式转换关系如下图所示:
-
在har2case命令后面加上-2y或–to-yml可以生成yaml格式测试用例;
- 如:
har2case ./har/xxx.har -2y
- 如:
-
在har2case命令后面加上-2j或–to-json可以生成json格式测试用例;
- 如:
har2case ./har/xxx.har -2j
- 如:
-
三种格式用例的对比:----待补充
对比 | JSON | YAML | pytest |
---|---|---|---|
优点 | |||
缺点 | |||
4.运行用例
(1)运行方式
- hrun 在测试用例文件路径下执行:
hrun ./testcase/xxx.py
- pytest 在测试用例文件路径下执行:
pytest ./testcase/xxx.py
- 两者效果基本相同,hrun包装了pytest,所以pytest的功能都可以在hrun中使用,即所有的参数、插件
- YAML/JSON用例和pytest用例文件含有相同的信息,也可以使用hrun运行。
5.测试报告
受益于pytest的集成,HttpRunner v3.x可以利用pytest所有插件,包括pytest-html和allure-pytest,生成allure报告的步骤:
(1)前提:
- 安装allure-pytest
(2)运行用例时收集结果
- 要使Allure侦听器能够在测试执行期间收集结果,只需添加–alluredir选项,并提供指向应存储结果的文件夹的路径。 例如:
hrun xxx.py --alluredir=./tmp/my_allure_results
# /tmp/my_allure_results :临时文件路径
(3)生成allure测试报告
allure generate ./tmp/my_allure_results -o ./reports/allure
# ./tmp/my_allure_results:运行用例时采集的测试结果
# ./reports/allure:期望生成allure测试报告的保存路径
(4)查看报告
- 方法1:直接从运行结果查看
allure serve ./tmp/my_allure_results
- 方法2:查看生成的测试报告
allure open -h 127.0.0.1 -p 8883 ./reports/allure
6.性能测试
- httprunner3.x,还可以结合locust进行性能测试;
- 在httprunner4.x,性能测试的能力得到了进一步的提升
- 此专栏主要投入接口自动化测试,httprunner性能测试能力的挖掘,将放在性能测试专栏中呈现。
================= = =手打分隔线= = ====================
至此你已经将httprunner3.x的整个最基本流程走了一遍,达到能用的级别,快去用你们的项目实践吧;
想要达到下一个阶段:用好,还有很多的细节需要打磨,我们一步一步来·····加油
五、httprunner的精通
学习有很多种方法,但是想要事半功倍,需要具备以下几点:
1.知识储备
2.耐心
3.实践
1.知识储备
本专栏学习需要具备的知识储备: