Postman API 自动化测试教程:入门指南及更多 - Nao
文章目录
什么是 API?
应用程序编程接口)是一个定义多个软件中介之间交互的计算接口。它规定了可以进行的调用或请求类型、操作方式、数据格式以及需要遵循的约定。API 还提供扩展机制,允许用户以不同方式扩展现有功能。API 可以针对特定组件进行定制,也可以根据行业标准设计,以确保API 实现了模块化编程,使用户能够通过接口独立工作。
什么是 API 测试?
API 测试是一种软件测试方法,主要包括以下两种类型:
- 专门测试 API 的功能。
- 更广泛地,通过调用 API 测试系统的整体功能、可靠性、安全性和性能。
API 测试的最佳实践
- 遵循 RESTful API 风格,使用语义化的 URI 定义、准确的 HTTP 状态代码,并通过 API 定义理解资源之间的关系。
- 提供详细准确的 API 文档(如 Swagger 文档)。
- 外部 API 可通过版本号(如
https://thoughtworks.com/v1/users/)实现快速迭代。
API 测试在测试金字塔中占据重要地位,主要集中在系统和服务的边界,验证功能和业务逻辑。通常在服务构建并部署到测试环境后执行。
API 测试类型
API 测试可以分为以下类型:
- 功能测试:验证 API 是否按预期工作。
- **非性能测试、安全性测试和兼容性测试等。
API 测试的基本步骤
- 发送请求。
- 获取响应。
- 验证响应结果。
Postman 和 Newman 简介
Postman 是一款流行的 API 开发工具,提供了直观的图形界面,用于创建、测试和调试 API。它支持多种 HTTP 请求方式(如 GET、POST、PUT、DELETE 等),并支持多种身份验证和授权方式。此外,Postman 还支持轻松编写和共享测试脚本。
Newman 是 Postman 的命令行工具,用于在无需使用 Postman GUI 的情况下运行测试套件。通过 Newman,用户可以将 Postman 的集合导出为可执行文件,并在任何环境中运行。Newman 还支持生成 自动化测试。
Postman 的主要功能
- 环境和变量管理:支持在不同环境(如开发、测试、生产)之间切换,并轻松管理变量。
- 自动化测试:可创建和运行自动化测试,并集成到持续集成或部署流程中。
- 协作和共享:支持团队成员共享收藏和环境,促进协作。
- 监控:提供实时监控 API 可用性和性能的功能。
Newman 的主要功能
- 命令行界面:支持在命令行中运行测试,便于自动化测试和集成到 CI/CD 流程中。
- 多种输出格式:支持生成 HTML、JSON 和 JUnit 格式的测试报告。
- 并发执行:支持并发执行测试,提高效率。
- 轻量级:相比 Postman GUI,Newman 更轻量化,资源占用更少。
Postman 和 Newman 的优势
- 集成能力:可与 GitHub、Jenkins、Slack 等工具集成,便于开发和部署。
- 文档生成:通过请求和响应生成准确及时的 API 文档。
- 测试脚本:支持使用 JavaScript 编写测试脚本,提供灵活性和定制化能力。
- 历史记录:存储 API 请求历史,便于调试和问题排查。
- 多平台支持:可在 Windows、MacOS 和 Linux 上运行。
Postman 和 Newman 项目结构示例
以下是一个 Postman 和 Newman API 自动化测试项目的文件结构:
Postman-Newman-demo
├── README.md
├── package.json
├── package-lock.json
├── Data // 测试数据文件夹
│ └── testdata.csv // 测试数据文件
├── Testcase // 测试用例文件夹
│ └── APITestDemo.postman_collection.json // 测试用例文件
├── Env // 测试环境文件夹
│ └── DemoEnv.postman_environment.json // 测试环境文件
├── Report // 测试报告文件夹
│ └── report.html
├── .gitignore
└── node_modules // 项目依赖
创建 Postman 和 Newman 项目
初始化项目
-
创建项目文件夹:
mkdir Postman-Newman-demo cd Postman-Newman-demo -
初始化 Node.js 项目:
npm init -y -
安装 Newman:
npm install newman@5.1.2 --save-dev
在 Postman 中创建集合和请求
- 打开 Postman,点击左上角的“新建”按钮,选择“集合”,输入集合名称(如
demo),点击“创建集合”。 - 在集合中,点击右上角的三个点,选择“添加请求”,输入请求名称(如
get-demo),点击“保存”按钮。 - 按照上述步骤,添加另一个请求(如
post-demo)。
编写测试用例
示例:GET 请求
-
在
get-demo请求中,选择 GET 方法,输入 URL:https://jsonplaceholder.typicode.com/posts/1 -
在 Header 中,添加以下键值对:
Key: Content-Type
Value: application/json -
在“测试”选项卡中,添加以下脚本:
pm.test("res.status should be 200", function () { pm.response.to.have.status(200); }); pm.test("res.body should be correct", function() { var data = pm.response.json(); pm.expect(data.id).to.equal(1); pm.expect(data.title).to.contains('provident'); }); -
点击“发送”按钮,验证响应结果。
示例:POST 请求
-
在
post-demo请求中,选择 POST 方法,输入 URL:https://jsonplaceholder.typicode.com/posts -
在 Header 中,添加以下键值对:
Key: Content-Type
Value: application/json -
在 Body 中,选择
raw和JSON格式,输入以下请求正文:{ "title": "foo", "body": "bar", "userId": 1 } -
在“测试”选项卡中,添加以下脚本:
pm.test("res.status should be 201", function () { pm.response.to.have.status(201); }); pm.test("res.body should be correct", function() { var data = pm.response.json(); pm.expect(data.id).to.equal(101); pm.expect(data.title).to.equal('foo'); }); -
点击“发送”按钮,验证响应结果。
使用环境变量
-
在 Postman 的右上角,点击齿轮图标,选择“管理环境”,创建一个名为
DemoEnv的环境。 -
添加一个名为
host的变量,值为:https://jsonplaceholder.typicode.com -
在请求中,将 URL 更新为:
{{host}}/posts/1
导出环境变量和测试用例
- 导出环境变量文件和测试用例文件,分别存储到项目文件夹中的
Env和Testcase文件夹中。
配置 package.json
在 package.json 中,添加以下脚本:
"scripts": {
"test": "newman run Testcase/demo.postman_collection.json -e Env/DemoEnv.postman_environment.json"
}
运行测试:
npm run test
总结
Postman 和 Newman 是强大的 API 测试工具,结合图形界面和命令行工具,能够实现高效的自动化测试。通过本文的教程,您可以快速搭建自己的 API 自动化测试项目,并将其集成到 CI/CD 流程中。
原文链接: https://naodeng.medium.com/postman-api-automation-testing-tutorial-getting-started-and-building-a-postman-api-automation-test-20120b1c4375
最新文章
- Postman API 自动化测试教程:入门指南及更多 – Nao
- 从2024年三个API趋势中学习,塑造新的一年
- 通过Fetch和Axios在React中使REST API
- 企业如何合法使用三方数据、自有的用户数据?
- 如何在 Python 和 Flask 中使用 IP API 查找地理位置?
- 什么是API方法?
- 玩转色彩世界:The Color API的魔法调色板
- 11 种最佳营养和食品 API 解决方案
- JSON Schema:自定义API响应以提升用户体验
- JavaScript中的Temporal Date API非常优秀,原因如下:- Apidog
- 使用PyCharm调用API指南
- GraphQL vs. REST APIs:为何不应使用GraphQL