序言
在前文【】中,我们介绍了目前目前Github上广受关注的新锐接口测试工具Bruno,给厌倦了Postman必须在线使用限制的同学提供了一个很好的替代选择。
Bruno的核心优势,官网重点给出了如下几点:
- 承诺开源和可扩展,并且专心做客户端,永不向“平台化”扩充产品。
- 基于Git实现协作和版本管理
- 离线使用,永不同步本地数据 😂😂😂
下面我们就通过一个系列,详细介绍通过Bruno来进行API接口测试的详细实战教程。本文是第一篇,重点介绍如下内容:
- Bruno的安装和界面说明
- 结合Github API实现典型API操作的方法
- 环境管理
- 鉴权机制和加密
Bruno安装和界面概览
安装
|
|
使用界面
-
左侧面板:Collection管理、导航(类似IDE的项目结构)
-
中央区域:请求编辑器(URL/Headers/Body配置)
-
右侧面板:响应结果显示(内容、状态、断言等)
-
工具栏:顶部主要是一些高级功能配置(付费版本)、变量管理(全局、环境);底部工具栏是工具的系统级配置(界面、代理、鉴权等),cookies、license管理
-
快捷键体系:
Ctrl +E
:环境变量设置Ctrl + B
:新建请求Ctrl + Enter
:立即发送请求
典型HTTP接口测试实现(Github API)
下面我们结合 Github
的官方API接口,介绍在 Bruno
中如何完成典型HTTP接口请求测试。
Github API简介
GitHub 是一个面向开源软件项目的托管平台,因为使用 Git 作为唯一的版本库格式进行托管,故名 GitHub。也是目前全球最大的代码托管平台,可以说是程序员的圣地,号称全球最大的同性交友平台
GitHub API目前有两个版本,一个是基于GraphQL的V4版本, 而更常用的主要还是之前的Restful API,它的Restful API定义长期以来被视作此类接口的典范。
具体的接口说明文档:参见 https://docs.github.com/zh/rest?apiVersion=2022-11-28
github 中的时间格式
YYYY-MM-DDTHH:MM:SSZ
github 限流规则
github 为包含服务端负载压力,会对请求流量进行限制。在每个 github 的响应消息头中都会携带 github 的限流设置。
头参数 | 含义 |
---|---|
X-RateLimit-Limit | 当前每小时最大请求限制,一般未鉴权请求60次,鉴权请求5000次 |
X-RateLimit-Remaining | 当前剩余请求次数 |
X-RateLimit-Reset | 剩余限制重置时间,毫秒 |
请求参数与分页
请求中可以携带参数,一般包含两种参数: 路径参数和查询参数
github API中默认支持两个分页参数:
- page 当前显示页数
- per_page 每页显示结果数
github 请求Token
从Github账号设置页中,增加访问API的Token配置
配置Token鉴权
进入Bruno,新建一个Collection, 命名 github
,在其中的 Auth
部分, 将之前设置的API token添加进来,这里的鉴权方式选择 bearer Token
除了 bearer Token
外, Bruno还支持其他多种鉴权方式,能基本覆盖到各种API接口的鉴权模式。
- AWS Sig:针对亚马逊的AWS公有云用户签名的认证方式
- Basic auth:基本鉴权,通过输入账号、密码
- WSSE auth:Web Service安全用户认证
- Bearer Token:基于加密文本的安全认证令牌
- Digest auth:摘要式认证
- NTLM auth:微软的局域网管理认证协议
- Oauth 2.0:开放式授权协议,是第三方认证的常用协议
- API Key:服务端自己定义的接入令牌
- no Auth:不鉴权
- inherit:继承上一级鉴权(Bruno中,下一级请求可以使用上一级的鉴权设置)
接口测试中的增删改查
1. GET请求:获取制定项目最新Release
目标接口:GET /repos/{owner}/{repo}/releases/latest
Bruno中通过 {{var}}
,可以在请求中指定变量,变量配置如下。点击发送按钮后,成功获得响应。
请求这里的鉴权方式使用inherit
, 继承collection中配置的 bearer token
鉴权方式
2. POST请求:创建Issue
目标接口:POST /repos/{owner}/{repo}/issues
创建issue,对应 POST
方法,Bruno中配置如下,
-
Body配置:
1 2 3 4 5 6 7
{ "title": {{issue_title}}, "body": "发现一个测试问题", "labels": [ "bug" ] }
-
动态变量注入:
这里的issue标题,我们使用Bruno的内置动态变量
{{$timestamp}}
, Bruno提供了丰富的内置动态变量,对于我们动态模拟请求数据提供了极大方便。1 2 3
# 标题预置变量 vars: issue_title: "测试问题_{{$timestamp}}"
到Github上查看,Issue已创建
3. PATCH请求:修改Issue
目标接口:PATCH /repos/{owner}/{repo}/issues/3
关闭 issue_number 为 3 的问题
|
|
4. DELETE请求:删除Issue 评论
目标接口:DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}
基础测试断言
Test脚本验证 状态码
Bruno 中可以类似Postman那样编写Test脚本来进行结果验证
|
|
界面Assert
对于一些常用的断言,Bruno中也可以直接在界面上通过添加 Assert
来进行断言。
以上Test和Assert 执行结果如下
以上就是关于Bruno进行接口测试时,主要的基础功能用法介绍。后续会继续更新其他进阶用法更新。 也欢迎大家进入测试交流群和小伙伴们继续深入交流。回复 进群
获取入群邀请。