使用postman测试api接口基本步骤

测试一个已写好的 API 接口需要系统性地验证其功能、性能、安全性及异常处理能力。以下是使用 Postman 进行 API 接口测试的详细步骤和注意事项:


1. 确认接口文档

  • 明确输入输出:了解接口的请求方法(GET/POST/PUT/DELETE)、URL、请求头(Headers)、请求体(Body)、路径参数(Path Params)、查询参数(Query Params)等。
  • 预期结果:明确接口在正常和异常情况下的响应状态码、数据结构及业务逻辑。

2. 基础功能测试

步骤 1:构造请求
  1. 新建请求:在 Postman 中创建新请求,输入接口 URL。
  2. 选择 HTTP 方法:根据文档选择 GET、POST、PUT 等。
  3. 设置请求头
    • 添加 Content-Type(如 application/json)。
    • 身份验证(如 Authorization: Bearer <token>)。
  4. 设置请求参数
    • 路径参数(URL 中的变量,如 /users/{{id}})。
    • 查询参数(Query Params,如 ?page=1&limit=10)。
    • 请求体(Body):
      • 对于 POST/PUT,选择 raw 格式并输入 JSON 数据(示例):
        {"name": "John","email": "john@example.com"
        }
        
步骤 2:发送请求并验证响应
  • 点击 Send,检查以下内容:
    1. 状态码(如 200 OK201 Created400 Bad Request)。
    2. 响应体:数据格式(JSON/XML)和内容是否符合预期。
    3. 响应头:如 Content-TypeCache-Control 等。

3. 参数化与动态数据

  • 环境变量:在 Postman 中定义环境变量(如 {{base_url}}{{token}}),便于切换测试环境(开发、测试、生产)。
  • 动态生成数据:在 Pre-request Script 中生成随机数据(如随机用户名):
    // 生成随机字符串
    const randomName = 'User' + Math.floor(Math.random() * 1000);
    pm.environment.set("random_name", randomName);
    
  • 在请求体中引用变量:{ "name": "{{random_name}}" }

4. 异常测试

  • 无效输入
    • 缺失必填字段(如不传 email)。
    • 错误数据类型(如用字符串代替数字)。
    • 超长字符串(测试字段长度限制)。
  • 身份验证失败
    • 无效 Token 或未传 Token。
  • 边界值测试
    • 数字参数的极大/极小值(如 page=0page=100000)。

5. 自动化测试脚本

在 Postman 的 Tests 标签页中编写断言脚本,自动验证接口行为:

// 检查状态码
pm.test("Status code is 200", () => pm.response.to.have.status(200));// 验证响应字段存在且类型正确
pm.test("Response has user ID", () => {const jsonData = pm.response.json();pm.expect(jsonData.id).to.be.a('number');
});// 验证业务逻辑(如创建用户后返回的 name 是否匹配请求)
pm.test("Created user name matches request", () => {const requestData = JSON.parse(pm.request.body.raw);const responseData = pm.response.json();pm.expect(responseData.name).to.eql(requestData.name);
});

6. 批量运行测试(Collection Runner)

  1. 将多个接口保存到 Collection 中。
  2. 点击集合右侧的 Run 按钮。
  3. 配置迭代次数、延迟、数据文件(如 CSV/JSON 文件驱动测试)。
  4. 查看测试结果报告,标记失败用例。

7. 高级测试场景

  • 依赖接口测试
    • 使用 Postman 的脚本功能,将上一个接口的返回值作为下一个接口的输入(如获取 Token 后用于后续请求)。
    // 在登录接口的 Tests 中提取 Token
    const token = pm.response.json().token;
    pm.environment.set("auth_token", token);
    
  • 性能测试(需 Postman 高级版或工具如 JMeter):
    • 验证接口在高并发下的响应时间和稳定性。
  • 安全性测试
    • 敏感数据是否加密(如密码明文传输)。
    • SQL 注入/XSS 攻击测试(如输入 ' OR 1=1 --)。

8. 结果分析与报告

  • 控制台日志:在 Postman 控制台(View → Show Postman Console)查看请求和响应的原始数据。
  • 导出报告
    • 使用 Newman(Postman 命令行工具)生成 HTML 报告:
      newman run my_collection.json -e my_env.json -r html
      
    • 集成到 CI/CD(如 Jenkins、GitHub Actions)。

9. 常用测试用例示例

测试类型用例描述预期结果
正常功能传所有必填字段,数据合法返回 200 OK,数据正确
缺失必填字段不传 email 字段返回 400 Bad Request
无效 Token使用过期 Token返回 401 Unauthorized
数据唯一性重复创建相同用户名返回 409 Conflict

10. 工具与扩展

  • Swagger/OpenAPI:导入 API 文档自动生成测试用例。
  • Mock 服务器:模拟未完成的依赖接口。
  • Postman Monitor:定时监控接口可用性(需付费)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/70597.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

綫性與非綫性泛函分析與應用_1.例題(下)-半母本

第1章 實分析與函數論:快速回顧(下) 五、基數;有限集和無限集相關例題 例題1:集合基數的判斷 判斷集合和集合B=\{a,b,c,d,e\}的基數關係。 解析: 可以構造一個雙射,例如,,,,。 所以,兩個集合具有相同的基數。 例題2:可數集的證明 證明整數集是可數集。 解析: …

Windows系统第一次运行C语言程序,环境配置,软件安装等遇到的坑及解决方法

明确需要编辑器和编译器&#xff0c;并选择自己要用什么&#xff08;我选的编辑器是VSCode&#xff1a;Visual Studio Code&#xff1b;编译器是gcc&#xff09;下载VSCode并配置环境变量&#xff08;这里没啥问题&#xff09;&#xff0c;安装C/C的拓展安装Cygwin&#xff0c;…

浅拷贝和深拷贝的区别?可以举例说明

在编程中&#xff0c;浅拷贝和深拷贝是用于复制对象的两种不同方式&#xff0c;它们的主要区别在于复制对象时对对象内部成员的处理方式。今天我们对此进行讨论。 目录 1 浅拷贝 2 深拷贝 1 浅拷贝 浅拷贝创建一个新对象&#xff0c;新对象的属性值会复制原始对象的属性值…

微信小程序实现拉卡拉支付

功能需求&#xff1a;拉卡拉支付&#xff08;通过跳转拉卡拉平台进行支付&#xff09;&#xff0c;他人支付&#xff08;通过链接进行平台跳转支付&#xff09; 1.支付操作 //支付 const onCanStartPay async (obj) > {uni.showLoading({mask: true})// 支付接口获取需要传…

使用ESP-IDF来驱动INMP441全向麦克风

之前的文章我们讲过了I2S。 I2S是什么通信协议&#xff1f;它如何传输音频数据&#xff1f;它和I2C是什么关系&#xff1f;_i2c接口和i2s-CSDN博客文章浏览阅读836次&#xff0c;点赞12次&#xff0c;收藏14次。这个可以参考ADC来理解&#xff0c;我们的ADC也是有左对齐和右对…

MobaXterm_Portable_v23.2 免费下载与使用教程(附安卓替代方案)

一、MobaXterm_Portable 简介 MobaXterm 是一款功能强大的全能终端工具&#xff0c;支持 SSH、SFTP、RDP、VNC、X11 转发 等多种协议&#xff0c;集成了终端、文件传输、远程桌面等功能。其便携版&#xff08;Portable Edition&#xff09;无需安装&#xff0c;解压即可使用&a…

【带你 langchain 双排系列教程】6.LangChain多模态输入与自定义输出实战指南

一、为什么需要多模态交互&#xff1f; 在真实业务场景中&#xff0c;数据从来都不是单一形式的。想象一个智能客服系统需要同时分析用户的文字描述、上传的产品图片和语音留言&#xff0c;或者一个内容审核系统需要检查文本、图像和视频的组合内容。传统单一模态的处理方式已…

【Bluedroid】AVRCP 连接源码分析(三)

接着上一篇【Bluedroid】AVRCP 连接源码分析&#xff08;一&#xff09;-CSDN博客&#xff0c;继续AVRCP连接的源码分析。 AVRC_OpenBrowse /packages/modules/Bluetooth/system/stack/avrc/avrc_api.cc /*****************************************************************…

基于大语言模型的推荐系统(1)

推荐系统&#xff08;recommendation system&#xff09;非常重要。事实上&#xff0c;搜索引擎&#xff0c;电子商务&#xff0c;视频&#xff0c;音乐平台&#xff0c;社交网络等等&#xff0c;几乎所有互联网应用的核心就是向用户推荐内容&#xff0c;商品&#xff0c;电影&…

高性能GPU计算:释放计算潜力的加速利器

高性能GPU计算:释放计算潜力的加速利器 大家好,我是Echo_Wish,今天我们来聊一聊 高性能GPU计算。近年来,随着人工智能、深度学习、科学计算等领域的快速发展,GPU(图形处理单元)作为计算加速的核心技术,逐渐成为数据处理的“核心大脑”。尤其是在深度学习模型训练和大规…

QT闲记-状态栏,模态对话框,非模态对话框

1、创建状态栏 跟菜单栏一样,如果是继承于QMainWindow类,那么可以获取窗口的状态栏,否则就要创建一个状态栏。通过statusBar()获取窗口的状态栏。 2、添加组件 通常添加Label 来显示相关信息,当然也可以添加其他的组件。通过addWidget()添加组件 3、设置状态栏样式 …

SHELL32!SHLoadPopupMenu函数分析之添加属性菜单项

SHELL32!SHLoadPopupMenu函数分析之添加属性菜单项 第一部分&#xff1a; // // user does not support pop-up only menu. // STDAPI_(HMENU) SHLoadPopupMenu(HINSTANCE hinst, UINT id) { HMENU hmenuParent LoadMenu(hinst, MAKEINTRESOURCE(id)); if (hmenuPare…

将RocketMQ集成到了Spring Boot项目中,实现站内信功能

1. 添加依赖 首先,在pom.xml中添加RocketMQ的依赖: <dependencies><!-- Spring Boot Starter Web --><dependency><groupId>org.springframework.boot

C语言基础要素:安装 Visual Studio 2022

安装 Visual Studio 2022 Visual Studio 是由微软开发的一款集成开发环境&#xff08;IDE&#xff09;&#xff0c;支持多种编程语言和开发平台。它提供了丰富的工具和功能&#xff0c;帮助开发者高效地编写、调试和部署应用程序。无论是桌面应用、Web 应用还是移动应用&#…

[ TypeScript ] “undefined extends xxx“ 总是为 true 的 bug

版本号 "typescript": "^5.7.3", "unplugin": "^2.2.0",说明 在使用 unplugin 时 , 我定义插件的参数是 必填的, 使用时却是一个可空参数, 不传参也不会报错, (options?: UserOptions) > Return &#x1f632;&#x1f632;&…

[通俗易懂C++]:指针和const

之前的文章有说过,使用指针我们可以改变指针指向的内容(通过给指针赋一个新的地址)或者改变被保存地址的值(通过给解引用指针赋一个新值): int main() {int x { 5 }; // 创建一个整数变量 x&#xff0c;初始值为 5int* ptr { &x }; // 创建一个指针 ptr&#xff0c;指向 …

华为昇腾服务器(固件版本查询、驱动版本查询、CANN版本查询)

文章目录 1. **查看固件和驱动版本**2. **查看CANN版本**3. **其他辅助方法**注意事项 在华为昇腾服务器上查看固件、驱动和CANN版本的常用方法如下&#xff1a; 1. 查看固件和驱动版本 通过命令行工具 npu-smi 执行以下命令查看当前设备的固件&#xff08;Firmware&#xff0…

设计心得——解耦的实现技术

一、说明 在前面的“设计心得——解耦”中&#xff0c;对解耦进行了高层次的抽象说明。本篇则对在实践中常用的解耦技术进行逐一分析说明&#xff0c;以期为开发者能更从理论到实践搭建一个桥梁。至于大家能够如何更好的在自己的项目中进行解耦的实践&#xff0c;就需要不断的…

Blaze RangePartitioning 算子Native实现全解析

引言&#xff1a;本文将全面且深入地解析Blaze RangePartitioning算子的Native实现过程。相较于原生Spark&#xff0c;RangePartitioning的Native实现在执行时间上达到了30%的显著下降&#xff0c;同时在资源开销方面节省了高达76%。这一改进大幅降低了运行成本&#xff0c;展现…

卷积与动态特征选择:重塑YOLOv8的多尺度目标检测能力

文章目录 1. YOLOv8的网络结构概述2. 添加注意力机制2.1 为什么添加注意力机制&#xff1f;2.2 如何将注意力机制集成到YOLOv8中&#xff1f;2.3 效果分析 3. C2f模块的集成3.1 C2f模块简介3.2 如何在YOLOv8中集成C2f模块&#xff1f;3.3 效果分析 4. 卷积操作的优化4.1 卷积操…