Httprunner接口测试框架入门
文章目录
- 一、HttpRunner 介绍
- 二、环境部署
- 三、生成脚手架
- 四、录制脚本 & 生成用例 & 运行测试
更多详细教程:
Httprunner测试用例规则讲解
Httprunner测试用例增强之变量(variables)的声明和引用
Httprunner测试用例增强之参数提取(extract)
Httprunner测试用例增强之自定义函数(debugtalk.xx)
Httprunner测试用例增强之参数化数据驱动(parameterize)
Httprunner测试用例增强之结果校验(validate)
一、HttpRunner 介绍
HttpRunner
是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型。简单易用,功能强大,具有丰富的插件化机制和高度的可扩展能力。。
HttpRunner v4.0
同时采用了 Golang/Python
两种编程语言,底层会有两套相对独立的执行引擎,兼具 Golang
的高性能和 pytest
的丰富生态。
httpruuner
官方文档:https://httprunner.com/docs/introduction/overview/
httprunner
的优点:
-
支持与
HAR/Postman/Swagger/Curl/JMeter
等工具对接,轻松实现用例生成和转换 -
httprunner
内置了loguru
日志模块 -
httprunner
内置了locust
模块,支持接口测试同时,又支持了性能测试 -
httprunner
内置了jmespath
模块,如果response
过多,用jmespath
模块取数据会更加的便捷 -
可以通过一行命令,快速的生成一个接口测试框架
-
httprunner
内置了pytest
框架,使用pytest
命令就可以运行httprunner
脚本。
二、环境部署
- 安装
python
:这里不具体介绍如何安装了。 - 安装
httprunner
:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple httprunner
- 安装
allure
:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple allure-pytest
- 下载
allure
报告插件,下载以后解压,allure
文件的路径配置到环境变量-path
里:https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/2.13.2/
- 查看
httprunner
版本:httprunner -V
- 安装
hrp
通过pip
安装的httprunner
版本仅仅只能得到hrun
命令。4.x
版本新增了一个hrp
命令,需在github
上下载安装包https://github.com/httprunner/httprunner/releases
首先下载hrp对应安装包:我安装的是4.3.5
版本,因此找到对应的安装包。
下载后解压,并将路径配置到环境变量path
中。
重新打开cmd
,输入hrp -v
, 可以查看到安装的版本。
遇到的错误:TypeError: ForwardRef._evaluate() missing 1 required keyword-only argument: 'recursive_guard'
问题原因:ForwardRef._evaluate() 添加了一个新参数 ‘recursive_guard’,而在代码 pydantic/v1/typing.py(第 66 行)中缺少这个参数。
这是一个python版本3.12.4的bug,阅读了网上的参考资料以后,可以通过将python版本下调为3.12.3解决。
三、生成脚手架
执行命令:hrp startproject [filename]
,即可初始化指定名称的项目工程。
相关目录与文件说明:
- har:har文件夹存放har文件,har文件可以通过charles或者其他抓包工具来获取
- results:报告目录
- testcases:测试用例目录,初始化成功后 文件夹中包含了多个示例测试用例
- .env :环境配置文件
- .gitignore :git仓库忽略文件
- debugtalk.py:辅助函数功能文件, 可以编写实现任意自定义逻辑的函数,只需通过 `funppy` 进行` register` 和 `serve()` 即可。
- proj.json:
四、录制脚本 & 生成用例 & 运行测试
- 使用fiddler抓取接口请求
这里我使用了过滤器Filters
,仅抓取指定域名的请求,同时过滤掉了js、css静态文件等[ 使用正则表达式:REGEX:(?insx)/[^\?/]*\.(css|ico|jpg|png|gif|bmp|wav|js|jpeg)(\?.*)?$ ]
-
点击File ->Exprot Sessions ->HTTPArchive v1.2 ->将导出的.var文件放到项目的har目录
-
使用hrp命令将目录har下的.har文件转成 yaml文件
命令:hrp convert --from-har har文件路径 指定输出类型 指定输出目录
目前支持以下几种类型:--to-json/--to-yaml/--to-gotest/--to-pytest
-
运行测试
命令:hrp run 需要具体运行的yaml文件 --gen-html-report
-
查看测试报告
在results
目录下打开report.html
文件: