httprunner 入门
httprunner 入门
Pupper一、 httpRunner
HttpRunner : 一款面向 HTTP(s) 协议的通用测试框架,只需要编写和维护一份 YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。
充分复用优秀的开源项目,不追求重复造轮子,而是将强大的轮子组装。
遵循 约定大于配置 的准则,在框架功能中融入自动化测试最佳工程实践。
追求投入产出比,一份投入即可实现多种测试需求。
1. 特征
- 支持以 YAML/JSON 格式定义测试用例
- 支持响应验证
- 支持初始化清除机制
- 支持套件级别的用例管理
- 支持 Pytest 命令(hrun 底层封装的 pytest)
- 支持 allure 生成测试报告
- 支持 性能测试 (底层 Locust)
2. 主流版本差异
二、 HttpRunner 安装
httpRunner 使用 python 开发, 支持 Python 3.6 + 和大多数操作系统
安装:
1 | pip install httpRunner |
验证:
1 | httprunner -V |
五大核心命令:
httprunner
: 主命令,用于所有功能hrun
: 别名httpRunner run
, 用于运行 YAML/JSON/pytest 测试用例hmake
: 别名httpRunner make
, 用于将 YAML/JSON 测试案例转换为 pytest 文件har2case
: 别名httprunner har2case
, 用于将 Har 转换为 YAML/JSON 测试用例1
2
3
4
5
6
7
8生成 pytest 文件
har2case xxx.har
生成 YAML 文件
har2case -2y xxx.har
生成 Json 文件
har2case -2j xxx.harlocusts
: 用于运行性能测试
三、 用例结构 整体结构
1. 用例结构 — config
config
: 每个测试用例都必须有的 config 部分,可以配置用例
- 必填项:
name
: 测试用例的名称,将在 log 和报告中展示
- 选填项
- base_url(可选) 测试用例中的通用Host
- variables(可选) 定义的全局变量,作用域为整个用例
- parameters(可选) 全局参数,用于实现数据化驱动,作用域为整个用例。
- verify(可选) 指定是否验证服务器的TLS证书
- export(可选) 指定输出的测试用例变量
2. 用例结构 — teststeps
teststeps
: 包含测试步骤相关信息,其中步骤可以引用其他测试用例
- 必填项:
- name : 测试步骤的名称,将在 log 和报告中展示
- request : 镶嵌字段, 包含请求信息
- 选填项:
- extract 提取接口响应信息
- validate
- hooks
四、 生成用例
1. 测试用例结构
在httprunner中,测试用例组织主要基于三个概念:
- 测试用例集(testsuite): 对应一个YAML/JSON/Python文件,包含单个或多个测试用例文件。
- 测试用例(testcase): 对应一个YAML/JSON/Python文件,包含单个或多个测试步骤。
- 测试步骤(teststep): 对应YAML/JSON/Python中 teststeps下的一个节点,描述单次接口测试的全
部内容,包括发起接口请求、解析响应结果、检验结果等。
对于单个YAML文件来说,数据存储结构为 list of dict 的形式,其中可能包含一个全局配置项
(config)和若干个测试步骤。
具体地: config: 作为整个测试用例的全局配置项 测试步骤:对应单个测试步骤(teststep),测试用
例存在顺序关系,运行时将从前往后依次运行各个测试步骤。
1 | config: |
2. 录制用例(使用抓包工具)
fiddler抓包,生成har文件,放到har目录中,File > Export Sessions > Selected Sessions >
httparchive v1.2
1 | har2case -2y xxx.har |
3. 编程测试用例
hr3支持 python代码,yaml, json 三种格式用例,以yml格式为例,只需要遵循一定规则,就可以写出
符合hr3标准的用例
1 | config: # 用例配置区 |
将该文件保存为case1.yml, 进入该文件所在目录运行测试用例
1 | hrun case1.yml |
五、 案例 增、删、改
1. 登录
1 | config: |
2. 增加课程
1 | config: |
3. 修改课程
1 | config: |
4. 删除课程
1 | config: |