前言
- 本系列文章开始介绍接口开源测试工具 --httprunner3的使用,基当前最新版本的3.1.6
简介
主要特点
HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。
- 继承所有强大的特性requests,享受人性化处理 HTTP(S) 的乐趣。
- 以 YAML 或 JSON 格式定义测试用例,pytest以简洁优雅的方式运行。
- 在支持下记录和生成测试用例HAR。
- 支持///variables机制来创建极其复杂的测试场景extract。validatehooks
- 使用debugtalk.py插件,任何功能都可以在测试用例的任何部分使用。
- 使用jmespath,提取和验证 json 响应从未如此简单。
- 有了pytest,数百个插件随时可用。
- 使用allure,测试报告可以非常漂亮和强大。
- 通过重用locust,您无需额外工作即可运行性能测试。
- 支持 CLI 命令,与CI/CD
说明 需要Python3.6+
Httprunner2.x和3.x区别
- 执行用例框架:3.x 是pytest;2.x是unitest
- 用例格式:3.x支持YAML/JSON/pytest;2.x支持YAML/JSON
安装
- 需要python3.6+环境:可参考 python环境搭建
- 使用pip安装
pip3 install httprunner
- 也可使用github 源码安装
pip3 install git+https://github.com/httprunner/httprunner.git@master
- 如果之前安装HttpRunner可以使用-U选项,升级到最新版本
pip3 install -U httprunner # 或 pip3 install -U git+https://github.com/httprunner/httprunner.git@master
- 查看版本
pip show httprunner
相关命令
- 查看帮助
httprunner -h
参数名 | 功能 |
-V --version | 查看版本号 |
-h, --help | 查看帮助 |
run | 用于运行YAML/JSON/Pytest 测试用例 |
startproject | 使用模板结构创建新项目 |
har2case | HAR(HTTP Archive) 转成 YAML/JSON |
make | YAML/JSON 测试用例转成 pytest用例 |
- 安装 HttpRunner 后,以下 5 个命令会写入系统环境变量配置。
- httprunner:主命令,用于所有功能。
- hrun:指令 httprunner run 的别名,用于运行 YAML/JSON/Pytest 测试用例。
- hmake: 指令 httprunner make 的别名,将 YAML/JSON 用例转换成 pytest 用例。
- har2case:指令 httprunner har2case 的别名,将 HAR 文件转换成 YAML/JSON 用例。
- locust:利用 locust 运行性能测试。
基本使用
创建项目
- httprunner startproject 项目名
httprunner startproject dahai_demo
- 项目目录
目录说明
- debugtalk.py(可选):存储项目中逻辑运算辅助函数
- 该文件存在时,将作为项目根目录定位标记,其所在目录即被视为项目工程根目录
- 该文件不存在时,运行测试的所在路径(CWD)将被视为项目工程根目录
- 测试用例文件中的相对路径(例如.csv)均需基于项目工程根目录
- 运行测试后,测试报告文件夹(reports)会生成在项目工程根目录
- YAML/JSON/Python(必须):测试用例文件,存储接口测试相关信息
- .env(可选):存储项目环境变量,通常用于存储项目敏感信息
- .csv(可选):项目数据文件,用于进行数据驱动
- reports:默认生成测试报告的存储文件夹
- testcases: 测试用例存放目录
- testsuites: 测试用例集存放目录
- data: 存储参数化文件,或者项目依赖的文件
make转pytest用例
- make 是把 YAML/JSON 测试用例转成 pytest用例, 需指定 yaml 文件路径或文件夹路径
httprunner make testcase # 等价于 hmake testcase
run 运行用例
- run 命令实际上有 2 个动作,一个是把 YAML/JSON 测试用例转成 pytest 用例,同上一步 make 的功能一样;第二个动作是用 pytest 执行测试用例
httprunner run testcases # 等价于 hrun testcase