Httprunner的使用
一、httprunner的简介
HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。
项目地址:https://github.com/HttpRunner/HttpRunner
1、HttpRunner 是一个基于 Python 开发的测试框架,可以运行在macOS、Linux、Windows 系统平台上。
2、Python 版本:HttpRunner 支持 Python 3.4 及以上的所有版本,并使用 Travis-CI 进行了持续集成测试,测试覆盖的版本包括2.7/3.4/3.5/3.6/3.7。虽然 HttpRunner 暂时保留了对 Python 2.7 的兼容支持,但强烈建议使用 Python 3.4 及以上版本。
3、操作系统:推荐使用 macOS/Linux。
三、安装方式
pip install httprunner==2.5.7
可指定安装版本进行安装
验证是否安装成功:hrun -V

安装har2case:pip install har2case
har2case -V

四、文件路径
YAML/JSON(必须):测试用例文件,存储接口测试相关信息
debugtalk.py(可选):存储项目中逻辑运算辅助函数,该文件存在时,将作为项目根目录定位标记,其所在目录即被视为项目工程根目录,该文件不存在时,运行测试的所在路径(CWD)将被视为项目工程根目录
.env(可选):存储项目环境变量,通常用于存储项目敏感信息
.csv(可选):项目数据文件,用于进行数据驱动
reports:默认生成测试报告的存储文件夹
五、基本语法
1、k:(空格)v:表示一对键值对(空格必须有),不支持table键,一般手动空格
2、以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的
3、属性和值大小写敏感
4、# 表示注释
5、null是用~表示
6、支持的数据结构:
对象:键值对的集合
数组:一组按次序排列的值
纯量(scalars):单个的、不可再分的值
字符串、布尔值、整数、浮点数、时间、日期、null
六、简单接口测试场景
get请求,不带参数:
- config:
name: httpbin api test
base_url: http://www.httpbin.org
- test:
name: get request #请求名称
request: # 请求具体内容
url: /get #请求url
method: GET #请求方式
validate: #断言
- eq: [status_code,200] #判断是否相等
# config:作为整个测试用例集的全局配置项 # • test:对应单个测试用例 # • name 这个 test 的名字 # • request 这个 test 具体发送 http 请求的各种信息, 如下: # • url 请求的路径 (若 config 中有定义 base_url, 则完整路径是用 base_url + url ) # • method 请求方法 POST, GET 等等 # • validate 完成请求后, 所要进行的验证内容. 所有验证内容均通过该 test 才算通过,否则失
get请求带参数:

post请求案例:

单个文件参数化:

七、参数说明
7.1 config参数说明
| 关键字 | 是否必须 | 数据类型 | 描述 |
| name | Y | string | 测试用例的名称,在测试报告中将作为标题 |
| variables | N | list/dict | 定义的全局变量,作用域为整个用例 |
| parameters | N | list/dict | 全局参数,用于实现数据化驱动,作用域为整个用例 |
| request | N |
dict |
request的公共参数,作用域为整个用例,常用参数包括base_url和headers |
| base_url | N | string | 测试用例请求url的公共host,指定该参数后,test中的url可以只描述path部分 |
| headers | N | dict | request的headers参数,作用域为整个用例 |
| output | N | list | 整个用例输出的参数列表,可输出的参数包括公共的variable和extract的参数,在long-level为debug模式下,会在terminal中打印出参数内容 |
7.2 test参数说明
| 关键字 | 是否必须 | 数据类型 | 描述 |
| name | Y | string | 测试步骤的名称,在测试报告中将作为测试步骤的名称 |
| request | N | dict | HTTP请求的详细内容 |
| variables | N | list/dict | 测试步骤中定义的变量,作用域为当前测试步骤 |
| extract | N | list | 从当前HTTP请求的响应结果中提取参数,并保存到参数变量中(例如tonken),后续测试用例可通过$tonken的形式进行引用 |
| validate | N | list | 测试用例中定义的结果校验项,作用域为当前测试用例 ,用于实现当前测试用例运行结果的校验 |
|
setup_hooks |
N | list | 在HTTP请求发送前执行hooks函数,主要用于准备工作 |
| teardown_hooks | N | lis | 在HTTP请求发送后执行hooks函数,主要用于测试后的清理工作 |
request 关键词:
request关键词中包括http请求中的详细内容:
headers:请求头部信息
method: 请求方式
url:请求地址
host:请求主机地址
params:GET请求参数
data:表单形式的参数
json:json格式的参数
八、断言设置
断言是拿实际结果和期望结果去比较;
validate:
- comparator_name: [check_item, expect_value]
- {"check": check_item, "comparator": comparator_name, "expect": expect_value}
举例:

httprunner支持的校验器

九、变量的创建及使用
9.1、.env文件参数化
Httprunner通过在项目根目录下新增 .env 文件进行环境变量配置,其作用是存放一些httprunner接口测试脚本中的一些固定配置项(如:主机地址、端口等)。

在测试用例需要使用的部分,使用ENV()方法进行调用。写法如下:

9.2、 辅助函数debugtalk.py
httprunner框架中,使用yaml或者json不便于做一些辅助的操作(如参数加密、逻辑判断等等),为了解决这个问题,引入debugtalk.py辅助函数来进行一些复杂的操作。 题外话:据说debugtalk是作者的博客名
使用${方法名()},其中,若是方法需要传参进行逻辑操作,可以在括号填写参数
十、hook机制应用:
Httprunner框架中的hook机制相当于unittest框架中的setup,teardown函数,用来进行测试用例执行之前的环境初始化以及测试用例执行完毕之后的环境清理操作。
httprunner中的hooks机制可以用在测试用例层级也可以用在测试步骤层级,其关键字是:setup_hooks、teardown_hooks
使用步骤:
1.一般在debugtalk.py中编写相应的初始化及环境清理函数
2.在测试用例文件中的 config 及 test 中 根据需要加入 setup_hooks、
teardown_hooks
参考资料:https://zhuanlan.zhihu.com/p/84066392 https://www.cnblogs.com/123anqier-blog/p/13093266.html
Httprunner作者地址:https://debugtalk.com/categories/1-OpenSource/HttpRunner/
Httprunner的使用的更多相关文章
- HttpRunner Manager接口自动化测试平台实践(Windows)
1. 源码下载 github: https://github.com/HttpRunner/HttpRunnerManager 下载后放入项目目录,结构如下: 2.依赖环境 根据根目录require ...
- HttpRunner框架(一)
HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试.性能测试.线上监控.持续集成等多种测试需求. 中文使用文档地址:h ...
- Httprunner学习
一.简介 HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份YAML/JSON脚本,即可实现自动化测试.性能测试.线上监控.持续集成等多种测试需求. 核心特性: 继 ...
- httprunner 使用总结
HttpRunner 概念 HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试.性能测试.线上监控.持续集成等多种测试 ...
- HttpRunner接口自动化测试框架
简介 2018年python开发者大会上,了解到HttpRuuner开源自动化测试框架,采用YAML/JSON格式管理用例,能录制和转换生成用例功能,充分做到用例与测试代码分离,相比excel维护测试 ...
- HttpRunner安装笔记(1)安装环境准备:pyenv安装
HttpRunner建议在Python 3.4 及以上版本,但是centos有其他功能模块基于python2.7,所以使用pyenv安装多版本pyhon版本. pyenv 是一款特别好用的Python ...
- 接口自动化测试框架HttpRunner
接口自动化测试框架 https://github.com/HttpRunner/HttpRunner http://debugtalk.com/post/ApiTestEngine-api-test- ...
- HttpRunner 参数化数据驱动
HttpRunner 2.0 参数化数据驱动案例,废话不说,直接上干货. 1.测试用例目录结构 api:接口集 testcases:测试用例 testsuites:测试套件 data: ...
- 基于HttpRunner的接口自动化测试平台HttpRunnerManager(二)
https://github.com/HttpRunner/HttpRunnerManager HttpRunnerManager Design Philosophy 基于HttpRunner的接口自 ...
- 接口自动化 Windows + HttpRunner 初探(一)
运行环境 HttpRunner 是一个基于 Python 开发的测试框架,可以运行在 macOS.Linux.Windows 系统平台上. HttpRunner 的开发环境为 macOS + Pyth ...
随机推荐
- hdu4975 行列和构造矩阵(dp判断唯一性)
题意: 和hdu4888一样,只不过是数据加强了,就是给你行列的和,让你构造一个矩阵,然后判断矩阵是否唯一. 思路: 构造矩阵很简单,跑一次最大流就行了,关键是判断矩阵的唯一性 ...
- POJ3040给奶牛发工资
题意: 有n种硬币,每种硬币有mi个,然后让你给奶牛发工资,每周发至少c元(就是不找零钱的意思)然后问你能发几周?(硬币之间都是倍数关系) 思路: 这个题目做了两天,丢脸,看完 ...
- c# 通过 p/invoke 使用 c的加密程序 参数传递问题
最近项目中使用需要上位机和下位机通过rs232通信,涉及到通讯加密问题, 硬件那边主要是pcb layout的,于是我就把加密的活拦了过来,锻炼锻炼 首先说明问题: 在c中,加密解密都测试通过,然后在 ...
- 【.NET 与树莓派】六轴飞控传感器(MPU 6050)
所谓"飞控",其实是重力加速度计和陀螺仪的组合,因为多用于控制飞行器的平衡(无人机.遥控飞机).有同学会问,这货为什么会有六轴呢?咱们常见的不是X.Y.Z三轴吗?重力加速度有三轴, ...
- 还不懂 redis 持久化?看看这个
Redis 是一个内存数据库,为了保证数据不丢失,必须把数据保存到磁盘,这就叫做持久化. Redis 有两种持久化方法: RDB 方式以及 AOF 方式 RDB 持久化 前言 RDB持久化把内存中的数 ...
- SparkSQL电商用户画像(五)之用户画像开发(客户基本属性表)
7.电商用户画像开发 7.1用户画像--数据开发的步骤 u 数据开发前置依赖 -需求确定 pv uv topn -建模确定表结构 create table t1(pv int,uv int,topn ...
- 2020BUAA-个人博客-案例分析
个人博客作业-软件案例分析 项目 内容 北航2020软工 班级博客 作业要求 具体要求 我的课程目标 通过案例分析提升自己对于软件工程的认识 课程收获 分析软件,了解软件的定位 第一部分 调研,评测( ...
- Java中Stream流相关介绍
什么是Stream? Stream是JDK8 API的新成员,它允许以声明性方式处理数据集合 特点 代码简洁: 函数式编程写出的代码简洁且意图明确,使用stream接口让你从此告别for循环 多核友好 ...
- mysql注入getshell
0x00 利用条件 root权限 secure_file_priv=为空或者在网站根目录下(网站根目录为d:\www,secure_file_priv=d:\也可以) 知道绝对路径 gpc关闭,这个应 ...
- [Qt]《开发指南》3.1源码分析
界面: ButterflyGraph: 可以看出,本工程在主程序main里调用窗口界面qmywidget,窗口界面继承了QWidget,并调用自定义类qperson,推测是qmywidget类中的一个 ...