一、httprunner的简介

HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。

项目地址:https://github.com/HttpRunner/HttpRunner

核心特性
• 继承 Requests 的全部特性,轻松实现 HTTP(S) 的各种测试需求
• 测试用例与代码分离,采用 YAML/JSON 的形式描述测试场景,保障测试用例具备可维护性
• 测试用例支持分层机制,充分实现测试用例的复用
• 测试用例支持参数化和数据驱动机制
• 使用 skip 机制实现对测试用例的分组执行控制
• 测试请求支持完善的 hook 机制
• 支持热加载机制,在文本测试用例中轻松实现复杂的动态计算逻辑
• 基于 HAR 实现接口录制和用例生成功能(har2case)
• 结合 Locust 框架,无需额外的工作即可实现分布式性能测试
• 执行方式采用 CLI 调用,可与 Jenkins 等持续集成工具完美结合
• 测试结果统计报告简洁清晰,附带详尽统计信息和日志记录
• 具有可扩展性,便于扩展实现 Web 平台化(HttpRunnerManager)
 
二、运行环境

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 dict   HTTP请求的详细内容
variables N list/dict 测试步骤中定义的变量,作用域为当前测试步骤 
extract  list 从当前HTTP请求的响应结果中提取参数,并保存到参数变量中(例如tonken),后续测试用例可通过$tonken的形式进行引用
validate list  测试用例中定义的结果校验项,作用域为当前测试用例 ,用于实现当前测试用例运行结果的校验

setup_hooks

list 在HTTP请求发送前执行hooks函数,主要用于准备工作
teardown_hooks  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的使用的更多相关文章

  1. HttpRunner Manager接口自动化测试平台实践(Windows)

    1. 源码下载 github: https://github.com/HttpRunner/HttpRunnerManager 下载后放入项目目录,结构如下: 2.依赖环境  根据根目录require ...

  2. HttpRunner框架(一)

    HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试.性能测试.线上监控.持续集成等多种测试需求. 中文使用文档地址:h ...

  3. Httprunner学习

    一.简介 HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份YAML/JSON脚本,即可实现自动化测试.性能测试.线上监控.持续集成等多种测试需求. 核心特性: 继 ...

  4. httprunner 使用总结

    HttpRunner 概念 HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试.性能测试.线上监控.持续集成等多种测试 ...

  5. HttpRunner接口自动化测试框架

    简介 2018年python开发者大会上,了解到HttpRuuner开源自动化测试框架,采用YAML/JSON格式管理用例,能录制和转换生成用例功能,充分做到用例与测试代码分离,相比excel维护测试 ...

  6. HttpRunner安装笔记(1)安装环境准备:pyenv安装

    HttpRunner建议在Python 3.4 及以上版本,但是centos有其他功能模块基于python2.7,所以使用pyenv安装多版本pyhon版本. pyenv 是一款特别好用的Python ...

  7. 接口自动化测试框架HttpRunner

    接口自动化测试框架 https://github.com/HttpRunner/HttpRunner http://debugtalk.com/post/ApiTestEngine-api-test- ...

  8. HttpRunner 参数化数据驱动

    HttpRunner 2.0 参数化数据驱动案例,废话不说,直接上干货. 1.测试用例目录结构      api:接口集 testcases:测试用例    testsuites:测试套件 data: ...

  9. 基于HttpRunner的接口自动化测试平台HttpRunnerManager(二)

    https://github.com/HttpRunner/HttpRunnerManager HttpRunnerManager Design Philosophy 基于HttpRunner的接口自 ...

  10. 接口自动化 Windows + HttpRunner 初探(一)

    运行环境 HttpRunner 是一个基于 Python 开发的测试框架,可以运行在 macOS.Linux.Windows 系统平台上. HttpRunner 的开发环境为 macOS + Pyth ...

随机推荐

  1. Windows核心编程 第二十章 DLL的高级操作技术

    第2 0章 D L L的高级操作技术 看了下这章的内容,谈不上高级,都是些常用相关,但是还是有一些细节需要注意. 20.1 DLL模块的显式加载和符号链接 如果线程需要调用D L L模块中的函数,那么 ...

  2. Linux-鸟菜-5-目录配置-FHS

    Linux-鸟菜-5-目录配置-FHS 这节内容比较休闲,主要就是介绍Linux的目录配置,也就是那些目录通常是干啥的,这个比较重要,需要我们去了解.但是我觉得通常看一遍记不住啥,也就记个大概,主要还 ...

  3. 在kubernetes上运行WASM负载

    在kubernetes上运行WASM负载 WASM一般用在前端业务中,但目前有扩展到后端服务的趋势.本文使用Krustlet 将WASM服务部署到kubernetes. 简介 Krustlet 是一个 ...

  4. JS String总结

    String常用总结 1.字符 length属性:表示字符串包含多少16位码元 charAt():方法返回给定索引位置的字符 charCodeAt() :可以查看指定码元的字符编码 String.fr ...

  5. mysql 索引十连问| 剑指 offer - mysql

    以下是结合网上及此前面试时遇到的一些关于mysql索引的面试题. 若对mysql索引不太了解可先翻阅相关文章 大白话 mysql 之深入浅出索引原理 - 上 大白话 mysql 之深入浅出索引原理 - ...

  6. mysql无列名注入

    0x00 原理   mysql无列名注入是报错注入的一个变种,前提是已知表名,但是不知道列名,或者只知道部分列名,可通过报错注入拼接查询自身表,当自表被拼接时,由于存在重复属性列,会将列信息报错返回, ...

  7. Linux权限问题(2)-unzip引发的权限问题

    背景:依然是上一个朋友,在用php调用unzip命令时,再次出现了权限被拒绝的问题. Notice:此处描述的问题,为使用php命令行执行php文件,因此进程属主为登录的用户,而不是nginx用户. ...

  8. k8s管理机密信息(12)

    一.启动应用安全信息的保护 1.Secret介绍 应用启动过程中可能需要一些敏感信息,比如访问数据库的用户名密码或者秘钥.将这些信息直接保存在容器镜像中显然不妥,Kubernetes 提供的解决方案是 ...

  9. 013.Kubernetes认证授权

    一 Kubernetes认证系统介绍 1.1 访问控制 Kubernetes API的每个请求都会经过多阶段的访问控制之后才会被接受,这包括认证.授权以及准入控制(Admission Control) ...

  10. 9.2-3 pstree & pgrep

    9.2 pstree:显示进程状态树     pstree命令以树形结构显示进程和进程之间的关系.     如果不指定进程的PID号,或者不指定用户名称,则会以init进程为根进程,显示系统的所有进程 ...