Bruno(Postman平替):开源 API 测试工具实用指南

受公司数据安全政策影响,我不得不由Postman转向了开源API测试工具Bruno。文章详细介绍了Bruno的下载安装、Workspace和Collection管理、请求配置、变量与环境变量使用、Git集成及测试能力等核心功能,并通过丰富截图与操作说明,展示了Bruno的易用性和灵活性。对于日常API测试需求,Bruno已能满足大部分开发者的使用场景。

1. 初识 Bruno

Postman一直是我进行API测试使用的工具,今天收到单位内部信,由于数据安全的原因不可以使用免费版的Postman了。如果非要使用Postman,只能使用企业付费版的。正常价是900多刀一年,企业内部的license要是用的多的话,会便宜一些。大环境不好的情况,就别申请付费版了。

内部推荐的替代是Bruno,一直伸着舌头的小黄狗。它是一个开源的,本地的,轻量级的API客户端。当然了,除了社区版,它也有付费版叫Bruno Ultimate。

截至 2026 年 1 月,Bruno 已成为开发者社区中备受推崇的 API 测试工具,被视为 Postman 的强力开源替代方案。

2. 基本操作

2.1 创建 Workspace

Workspace分为默认的My Workspace和自定义Workspace。首次打开Bruno后会自动创建默认Workspace,它无法被关闭和删除。而自定义的Workspace支持Git,分享以及管理collections。

创建自定义Workspace。

2.2 创建 Collection

创建Collection时,支持两种文档格式 .bru.yaml(beta)。Bruno的维护者说Json不支持多行字符串,YAML的缩进让人头疼,因为发明了叫做Bru 的标记语言。当然了,看了一下是使用了ohmjs库把.bru翻译成Json。我就姑且使用它推荐的格式。

也在可以在Collection下再创建文件夹,把同类型的请求放在一个文件夹下面,并支持共用的一些参数。

2.3 软件设置

客户端的左下角有Theme的选项,可以选择Light和Dark或是跟随系统。

其余的设置在左下角的小齿轮里,但是设置选项并没有太多。

3. Request

3.1 创建 Request

Request可以在Collection或是文件夹层面创建。每一级的名称右面都有三个小点,可以点击new request。在这里需要指定Request的类型,我选的是HTTP,因为我后端是FastAPI。然后再指定API的URL以及HTTP方法。

3.2 Request 下的选项

以登陆的API作为例子来看一下各个选项。

Params

在参数这里面,并没有区别是路径参数还是查询参数。它的机制是,根据参数名字来判断,如果API的路径参数里的名字能对上就是路径参数,对不上就是查询参数。

Body

因为我要提交的是登录表单,所以选择URL encoded。Body里是username和password。

没有要往Header加的东西,没有特殊的Header,也没有Token,因为是Login。

Auth

No Auth因为现在是要取得access token。但是以下的验证方式。

File

Request的参数都设置完后,点击file会显示出文件里的内容,它和存在磁盘上的文件是一样的。这个格式就是.bru的格式。

3.3 运行 Request

发送Request,然后收到的Response会在客户端的右侧显示。显示的方式是最常用的JSON,当然也有其他的方式,譬如HTML,XML,RAW等。

这是Response的Body。

这是Response的Header。

在Timeline这可以查看调用这个API的历史。点开每条历史,里面会保存Request,Response和Network Logs的数据。也可以点击右上角清除历史。

4. Variable 变量

4.1 普通变量

在右上角新建变量,我是按Collection来的。毕竟每个Collection测试的大概率不是同一个API Server。

变量就是键值对,对于密码或是API Key之类的可以点击Secret的开关,这样显示就是隐藏的了。

也可以在文件夹级别设置变量,它的优先级高于Collection。

如果同一个变量名在Collection和文件夹下都设置了。则在文件夹内的文件走文件夹的变量设置,Collection内的其它文件则遵循Collection的变量。变量的写法是{``{ VAR NAME }}

4.2 环境变量

在Collection的文件夹下新建一个 .env 文件,把baseUrl从Collection的变量移到环境变量里,内容为 baseUrl = http://127.0.0.1:8000/api/v1。这时可以看见原来的变量名变红了,说明它失效了。

.env文件要放在Collection名字的根目录下面。

然后在这个Collection设置变量的时候,键值对的值可以使用环境变量的键,只不过变量的名字前面加上前缀process.env.

但是在实际使用变量的时候,还是使用原来的变量名,发送Request依然可以得到Response。这个只是一个例子,通常是将敏感信息放到环境变量里,譬如账号密码,Token,API Key,私钥等。

4.3 环境变量存JWT来访问受限API

在Collection的变量里将值设为环境变量的键,然后在Request的时候引用。正常认证的信息是在请求的头部的,在客户端是单独列出来了一个Auth的选项。

5. Git

Bruno引以为傲的就是本地优先且项目即文件,因此使用Git进行版本管理也是顺理成章的了。客户端自带Git的UI界面,然而连Commit都需要付费版。我们直接在这个文件夹下面使用Git CLI进行操作就好了,对于用户来说没啥大的区别。

6. 测试能力

可以使用JS写一些用于测试的东西。这部分我从官网找的例子。

6.1 Assert

可以对多种参数进行断言,譬如Response的状态码,返回值啥的。格式就是目标,操作符和值。

6.2 Script

在Request之前或是Response之后,对一些参数进行操作。

6.3 Tests

和断言类似,也是使用JS写一些复杂的逻辑来判断一些事情。

7. 结尾

这篇文章省去了很多的介绍部分,着重讲了Bruno的用法,基本上算是一个比较全面的使用文档了。经过了一天的研究,对于我这种比较简单的API测试,还是可以平替Postman的。我也不需要登录,文件都在本地,通过Git也可以很好的分享给其他人。但是说回来,使用Postman的时候我还是觉得挺舒心的,毕竟用的比较习惯了。如果不是公司政策的要求,我也不会换其它的工具。

📚 延伸阅读

更多内容持续更新于我的博客:https://www.zenseek.site

相关推荐
zuozewei4 小时前
7DGroup 开源 AI SSE 流式输出性能测试工具
人工智能·测试工具·开源
卓码软件测评5 小时前
第三方软件确认测试机构【性能测试中内存泄漏的迹象:如何利用LoadRunner监控和发现 】
测试工具·ci/cd·性能优化·单元测试·测试用例
CeshirenTester5 小时前
从Selenium到Playwright:快速入门指南
selenium·测试工具
firstacui6 小时前
Tcpdump使用指南
网络·测试工具·tcpdump
非凡ghost16 小时前
Wireshark中文版(网络抓包工具)
网络·windows·学习·测试工具·wireshark·软件需求
可可南木1 天前
3070文件格式--5--board文件格式详解 5
功能测试·测试工具·pcb工艺
测试老哥1 天前
接口测试:加密和签名
自动化测试·软件测试·python·功能测试·测试工具·测试用例·接口测试
xuyuan19981 天前
超越Selenium:自动化测试框架Cypress在现代前端测试中的卓越实践(windows版本)三
前端·windows·测试工具·系统架构·cypress
天才测试猿1 天前
自动化测试用例编写
自动化测试·软件测试·python·测试工具·程序人生·职场和发展·测试用例