Postman最佳平替, API测试工具Bruno实用教程(一):基础篇

序言

在前文【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的内置动态变量 {
{$timestamp}}
, Bruno提供了丰富的内置动态变量,对于我们动态模拟请求数据提供了极大方便。

# 标题预置变量
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进行接口测试时,主要的基础功能用法介绍。后续会继续更新其他进阶用法更新。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容