序言
在前文【github星标超3万!Postman最强平替Bruno你用了吗?】中,我们介绍了目前目前Github上广受已关注的新锐接口测试工具Bruno,给厌倦了Postman必须在线使用限制的同学提供了一个很好的替代选择。
Bruno的核心优势,官网重点给出了如下几点:

承诺开源和可扩展,并且专心做客户端,永不向“平台化”扩充产品。
基于Git实现协作和版本管理
离线使用,永不同步本地数据 😂😂😂
下面我们就通过一个系列,详细介绍通过Bruno来进行API接口测试的详细实战教程。本文是第一篇,重点介绍如下内容:
Bruno的安装和界面说明
结合Github API实现典型API操作的方法
环境管理
鉴权机制和加密
Bruno安装和界面概览
安装
# Mac (Homebrew)
brew install bruno
# Windows (Winget)
winget install usebruno.bruno
# Linux (Snap)
sudo snap install 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配置:
{
"title": {
{
issue_title}},
"body": "发现一个测试问题",
"labels": [
"bug"
]
}
动态变量注入:
这里的issue标题,我们使用Bruno的内置动态变量 {, Bruno提供了丰富的内置动态变量,对于我们动态模拟请求数据提供了极大方便。
{$timestamp}}
# 标题预置变量
vars:
issue_title: "测试问题_{
{$timestamp}}"
到Github上查看,Issue已创建

3. PATCH请求:修改Issue
目标接口:PATCH /repos/{owner}/{repo}/issues/3
关闭 issue_number 为 3 的问题
{
"state": "closed"
}

4. DELETE请求:删除Issue 评论
目标接口:DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}

基础测试断言
Test脚本验证 状态码
Bruno 中可以类似Postman那样编写Test脚本来进行结果验证
test("Status is 200", () => {
expect(res.status).to.equal(200);
});
界面Assert
对于一些常用的断言,Bruno中也可以直接在界面上通过添加 Assert 来进行断言。
以上Test和Assert 执行结果如下

以上就是关于Bruno进行接口测试时,主要的基础功能用法介绍。后续会继续更新其他进阶用法更新。




















暂无评论内容