认识一下~接口开源框架--httprunner(一)
接口开源框架--httprunner
简介
HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架, 只需编写维护一份 YAML/JSON 脚本,即可实现自动化测 试、性能测试、线上监控、持续集成等多种测试需求。
安装
安装环境
HttpRunner 是一个基于 Python 开发的测试框架,可以运行在 macOS、Linux、Windows 系统平台上。
安装方法
pip3 install httprunner==2.5.7
安装完后利用 :hrun -V 查看版本,出来版本则代表安装成功
建议使用2.5.7稳定版本,3版本文档未更新,使用起来比较费力~
使用准备
准备一份接口操作文档,如果没有操作文档,则可以通过 Charles Proxy 或者 Fiddler 这类网络抓包工具进行抓包分析来了解接口的请求和响应细节。
httprunner的主要文件格式
YAML/JSON(必须):测试用例文件,存储接口测试相关信息
debugtalk.py(可选):存储项目中逻辑运算辅助函数 该文件存在时,将作为项目根目录定位标记,其所在目录即被视 为项目工程根目录 该文件不存在时,运行测试的所在路径(CWD)将被视为项目工 程根目录
.env(可选):存储项目环境变量,通常用于存储项目敏感信息
.csv(可选):项目数据文件,用于进行数据驱动 reports:默认生成测试报告的存储文件夹
测试用例结构
• 每个 YAML/JSON 文件对应一个测试用例(testcase)
• 每个测试用例为一个list of dict结构,其中可能包含全局配置项( config)和若干个测试步骤(test)
• config 为全局配置项,作用域为整个测试用例
• test 对应单个测试步骤,作用域仅限于本身
用例格式
通常一个脚本文件里面有如下模块:
- config
- test
- test
即:全局配置、用例、用例
config模块里面定义的是整个文本测试集的变量,即全局变量、test模块里面定义的是具体接口请求,对应单个测试步骤(teststep),测试用例存在顺序关系,运行时将从前往后依次运行各个测试步骤
举例:
以微信公众号获取token接口为例,新建一个yaml文件,命名为get_token.yaml
config模块
name 本用例集名称
request 请求全局变量,包括base_url(公共host)、headers等
base_url 全局公共host,也可以不定义,用例中写全url即可
以上全局配置,除了name,其他都是非必要的,根据需要添加。
parameters 全局参数,用于实现数据化驱动,作用域为整 个用例。
variables 定义的全局变量,作用域为整个用例
output 整个用例输出的参数列表,可输出的参数包括公共的 variable 和 extract 的参数; 在 log-level 为 debug 模 式下,会在 terminal 中打印出参数内容
test模块
name 本条测试用例的名字
request HTTP 请求的详细内容
variables 测试步骤中定义的变量,作用域为当前测试步骤
extract 从当前 HTTP 请求的响应结果中提取参数,并保存到参数变量中(例如 token),后续测试用例可通过$token的形式进行引用
validate 测试用例中定义的结果校验项,作用域为当前测试用例,用于实现对当前测 试用例运行结果的校验
setup_hooks 在 HTTP 请求发送前执行 hook 函数,主要用于准备工作
teardown_hooks NO list 在 HTTP 请求发送后执行 hook 函数,主要用于测试后的清理工
teardown_hooks 在 HTTP 请求发送后执行 hook 函数,主要用于测试后的清理工作
request关键词
headers:请求头部信息
method: 请求方式
url:请求地址
host:请求主机地址
params:GET请求参数
data:表单形式的参数
json:json格式的参数
运行方式
基于之前生成的json、yaml文件,通过命令行终端cd到用例所在目录,执行hrun 用例名称即可。
运行yaml文件测试用例
运行后可查看测试报告数据
可查看详细请求和返回信息
注意: test的执行顺序是自上而下执行,重点在于理解HttpRunner的分层结构以及包含关系