如何使用Postman自动化API测试 - LogRocket博客
APIs 是开发者构建每个应用程序背后的核心驱动力,它们是两个或多个软件组件之间的通信桥梁。然而,这种系统架构的一个潜在问题是,当某个组件出现故障时,可能会对依赖它的其他组件产生重大影响。因此,全面测试 API 以确保应用程序的正确性和稳定性显得尤为重要。
本文将深入探讨如何使用 Postman 为 API 编写自动化功能和集成测试,并将这些测试集成到 CI/CD 管道中运行。
为什么要自动化 API 测试?
自动化 API 测试的主要目的是确保应用程序在任何时间点都能保持正确性和可预测性。通过编写测试,开发者可以在代码库发生更改时快速验证应用程序的行为是否符合预期。
自动化测试的优势在于,它可以减少手动重复测试的工作量,同时提升开发效率。更重要的是,自动化测试能够为开发者提供信心,在添加新功能或修改代码时,测试会及时发现潜在的错误。
使用 Postman 编写 API 测试
设置 Postman
首先,您需要一个 Postman 账户。如果尚未注册,可以创建一个免费账户。登录后,进入您的 Postman 工作区。
接下来,我们创建一个名为“Delivery-API 测试”的集合,用于编写交付 API 的功能和集成测试。功能测试主要验证单个 API 端点的行为,而集成测试则检查多个端点之间的交互是否符合预期。
在左侧面板中,您将看到创建的集合,如下图所示:

设置请求
在“Delivery-API 测试”集合中,点击右侧的 菜单 按钮,选择 添加请求。创建以下四个请求:
- 搜索交付
- 选择配送
- 确认提货
- 完成配送
Postman 提供了内置的测试工具,允许使用 JavaScript 编写测试脚本。这些测试会在请求运行后立即执行,并可以访问请求返回的响应。
示例测试脚本
以下是“搜索交付”请求的测试脚本示例:
const responseJson = pm.response.json();
pm.test("response status", function() {
pm.response.to.have.status(200);
});pm.test("data contains results", function() {
pm.expect(responseJson).to.haveOwnProperty("data");
pm.expect(responseJson.data).to.be.an("array");
pm.expect(responseJson.data[0]).to.haveOwnProperty("status");
});pm.collectionVariables.set("SELECTED_DELIVERY_ID", responseJson.data[0].id);
上述代码验证了响应的状态码、数据类型以及字段完整性。此外,代码还设置了一个集合变量 SELECTED_DELIVERY_ID,用于跨请求共享数据。
对于其他请求,可以参考以下测试脚本:
// Select Delivery
pm.test("response status", function() {
pm.response.to.have.status(200);
});
pm.test("data contains result", function() {
pm.expect(responseJson).to.haveOwnProperty("data");
pm.expect(responseJson.data).to.be.an("object");
pm.expect(responseJson.data.status).to.eql("QUEUED");
});
// Confirm Pickup
pm.test("response status", function() {
pm.response.to.have.status(200);
});
pm.test("data contains result", function() {
pm.expect(responseJson.data.status).to.eql("PICKED_UP");
});// Complete Delivery
pm.test("response status", function() {
pm.response.to.have.status(200);
});
pm.test("data contains result", function() {
pm.expect(responseJson.data.status).to.eql("COMPLETED");
});
构建 API 服务器
在终端中,创建一个文件夹并初始化 Node.js 项目:
$ mkdir delivery-api
$ cd delivery-api
$ yarn init -y
创建 app.js 文件并安装必要的依赖项:
$ touch app.js
$ yarn add koa @koa/router
在 app.js 中,初始化 Koa 服务器并定义路由:
const Koa = require("koa");
const Router = require("@koa/router");
const app = new Koa();
const router = new Router();
const deliveries = [
{ id: "1", status: "CREATED" },
{ id: "2", status: "CREATED" },
];router.get("/deliveries", (ctx) => {
ctx.body = { status: "00", data: deliveries };
});router.get("/deliveries/:id/select", (ctx) => {
const delivery = deliveries.find(d => d.id === ctx.params.id);
ctx.body = { status: "00", data: { ...delivery, status: "QUEUED" } };
});app.use(router.routes());
app.listen(8000);
运行以下命令启动服务器:
$ yarn start
在 Postman 上运行手动测试
如果需要通过公网访问服务器,可以使用 ngrok 创建隧道:
$ ngrok http 8000
将生成的 URL 设置为 Postman 的集合变量 API_BASE_URL,例如:
- 搜索交付:
{{API_BASE_URL}}/deliveries - 选择配送:
{{API_BASE_URL}}/deliveries/:id/select
运行请求后,您可以在 Postman 的底部面板中查看测试结果。
自动化 API 测试
为了简化测试流程,我们可以将 GitHub Actions 自动化测试的步骤。
配置 GitHub Actions
在项目中创建工作流文件:
$ mkdir -p .github/workflows
$ touch .github/workflows/postman-tests.yml
添加以下内容到 postman-tests.yml:
name: Newman Run
on:
push:
branches:
- main
jobs:
newman:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install Newman
run: npm install -g newman
- name: Run Newman
run: newman run https://api.getpostman.com/collections/{{COLLECTION_UID}}
--environment {{ENVIRONMENT_UID}}
将 Postman 的 API 密钥和集合 UID 添加到 GitHub Secrets 中。
Postman 的局限性
尽管 Postman 是一款强大的 API 测试工具,但它也存在一些局限性:
- 依赖外部服务:如果测试需要依赖外部服务,可能难以完全自动化。
- 代码复用性:测试脚本与应用逻辑分离,代码复用较为困难。
开发者应根据项目需求选择合适的工具。
总结
本文介绍了如何使用 Postman 编写自动化 API 测试,并将其集成到 CI/CD 流程中。通过这种方式,开发者可以显著提升测试效率,确保应用程序的稳定性。希望本文对您有所帮助,祝您编码愉快!
原文链接: https://blog.logrocket.com/how-automate-api-tests-postman/
最新文章
- Java API 如何支持现代软件开发 – Brilworks
- 如何使用Python抓取LinkedIn数据 – Apify博客
- 如何使用Postman自动化API测试 – LogRocket博客
- 如何让 Python 写的 API 接口同时支持 Session 和 Token 认证?
- Golang做API开发时,如何设计可靠的签名验证机制?
- 非技术背景用户如何轻松使用天工大模型API
- 医疗API解决方案改善患者结果
- SOAP 和 REST API 的区别是什么?
- 发现啤酒世界的宝藏:开放啤酒数据库API助你探索全球精酿
- 如何获取讯飞星火 API Key 密钥(分步指南)
- API 安全最佳实践指南
- 如何使用Postman高效测试RESTful APIs:真实案例解析