Postman 接口测试详解
Postman 接口测试详解
- Postman 接口测试详解
- 1. Postman 基础知识
- 1.1 什么是 Postman?
- 1.2 Postman 的主要功能
- 2. 安装与设置
- 2.1 安装 Postman
- 2.2 创建 Postman 账户
- 3. Postman 的基本操作
- 3.1 创建和发送请求
- 3.2 解析响应数据
- 3.3 使用环境和变量
- 4. 进阶功能
- 4.1 编写测试脚本
- 4.2 使用集合
- 4.3 使用 Mock 服务器
- 5. 常见问题和解决方案
- 5.1 请求失败
- 5.2 环境变量无效
- 5.3 测试脚本失败
- 6. 实战案例
- 6.1 创建一个简单的 API 测试集合
- 7. 总结
Postman 接口测试详解
Postman 是一个强大的 API 测试工具,广泛应用于开发和测试阶段。它允许开发人员和测试人员通过图形化界面设计、发送 HTTP 请求,并对返回的响应进行验证。本文将详细介绍 Postman 的使用方法,覆盖接口测试的各个方面,包括基础操作、进阶技巧、常见问题和最佳实践等。
1. Postman 基础知识
1.1 什么是 Postman?
Postman 是一个功能丰富的 API 开发和测试工具,提供了一个直观的用户界面,用于创建、测试和管理 API 请求。它支持多种协议(如 HTTP、HTTPS)和方法(如 GET、POST、PUT、DELETE)。
1.2 Postman 的主要功能
- 请求构造:可以创建和发送各种类型的 HTTP 请求。
- 响应解析:查看响应数据,检查状态码、响应时间等信息。
- 测试脚本:编写测试脚本验证接口的功能。
- 环境管理:管理不同的环境和配置,例如开发、测试和生产环境。
- 集合管理:组织和运行多个 API 请求集合。
2. 安装与设置
2.1 安装 Postman
- 下载:访问 Postman 官网 下载适用于你操作系统的版本。
- 安装:根据系统类型执行安装程序。
- 启动:安装完成后启动 Postman 应用。
2.2 创建 Postman 账户
- 注册/登录:启动 Postman 后,你可以选择注册一个 Postman 账户或使用已有账户登录。账户功能包括同步数据、分享请求等。
3. Postman 的基本操作
3.1 创建和发送请求
-
新建请求:
- 点击左侧菜单中的 “New” 按钮,然后选择 “Request”。
- 输入请求的名称和描述,并选择一个集合或创建新集合来保存请求。
-
设置请求:
- 请求方法:选择 HTTP 方法(如 GET、POST、PUT、DELETE)。
- 请求 URL:在地址栏输入 API 端点的 URL。
- 请求头:添加请求头信息(例如 Content-Type)。
- 请求体:对于 POST 或 PUT 请求,配置请求体数据。
-
发送请求:
- 点击 “Send” 按钮发送请求。
- 查看响应面板中的状态码、响应时间和返回数据。
示例:
假设我们有一个 API 端点 https://jsonplaceholder.typicode.com/posts
,我们可以创建一个 GET 请求来获取所有帖子:
- 选择 GET 方法。
- 输入 URL:
https://jsonplaceholder.typicode.com/posts
。 - 点击 “Send”。
- 查看响应数据。
3.2 解析响应数据
- 状态码:检查响应状态码(如 200、404、500),确认请求是否成功。
- 响应体:查看返回的数据,支持 JSON、XML、HTML 等格式。
- 响应时间:检查响应时间,评估接口性能。
示例:
对于上述请求,响应数据可能如下:
[{"userId": 1,"id": 1,"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit","body": "quia et suscipit\nsuscipit...reprehenderit"},...
]
3.3 使用环境和变量
环境变量允许你在不同的环境(如开发、测试、生产)之间切换,而不需要更改请求 URL 和其他设置。
-
创建环境:
- 点击右上角的 “Environments” 图标。
- 选择 “Manage Environments”。
- 创建新环境并添加变量(如
baseUrl
)。
-
使用变量:
- 在请求中使用变量(例如
{{baseUrl}}/posts
)。
- 在请求中使用变量(例如
示例:
创建一个名为 “Development” 的环境,并添加变量 baseUrl
,设置值为 https://jsonplaceholder.typicode.com
。然后在请求 URL 中使用 {{baseUrl}}/posts
。
4. 进阶功能
4.1 编写测试脚本
Postman 允许你在请求后执行测试脚本,以验证响应是否符合预期。
-
添加测试脚本:
- 在请求的 “Tests” 标签中编写测试脚本。
-
常见测试脚本:
- 检查状态码:
pm.test("Status code is 200", function () {pm.response.to.have.status(200); });
- 验证 JSON 响应:
pm.test("Response should be a JSON object", function () {pm.response.to.be.json; }); pm.test("Response should have userId", function () {pm.response.to.have.jsonBody('userId'); });
- 响应时间检查:
pm.test("Response time is less than 200ms", function () {pm.response.to.have.responseTime.below(200); });
- 检查状态码:
4.2 使用集合
集合是组织和管理请求的容器,可以将相关请求分组在一起,方便管理和执行。
-
创建集合:
- 在左侧栏中点击 “Collections”。
- 点击 “New Collection” 创建新的集合,并添加描述。
-
添加请求到集合:
- 在创建请求时,选择要保存的集合。
- 请求将保存在指定的集合中。
-
运行集合:
- 点击集合名称,选择 “Run”。
- 使用 Collection Runner 运行集合中的所有请求,并查看测试结果。
示例:
创建一个名为 “User API” 的集合,并将获取用户和创建用户的请求添加到该集合。使用 Collection Runner 执行所有请求并生成报告。
4.3 使用 Mock 服务器
Mock 服务器允许你模拟 API 接口的响应,进行接口开发和测试。
-
创建 Mock 服务器:
- 在 Postman 中点击 “Mock Servers”。
- 创建新的 Mock 服务器,并为其配置请求和响应。
-
使用 Mock 服务器:
- 将 Mock 服务器 URL 替换为实际 API 端点进行测试。
示例:
创建一个 Mock 服务器,配置 /users
请求返回预定义的用户数据。使用 Mock 服务器 URL 进行请求测试。
5. 常见问题和解决方案
5.1 请求失败
问题:发送请求后,出现错误或无响应。
解决方案:
- 检查 URL:确保 URL 格式正确。
- 检查网络:确认网络连接正常。
- 查看日志:检查 Postman 控制台日志,了解错误详情。
5.2 环境变量无效
问题:环境变量在请求中未被替换。
解决方案:
- 检查变量名:确保变量名与环境变量一致。
- 选择环境:确认在请求中选择了正确的环境。
5.3 测试脚本失败
问题:测试脚本执行错误或测试失败。
解决方案:
- 调试脚本:使用
console.log
调试测试脚本。 - 检查 API 文档:确保测试脚本与 API 文档中的规范一致。
6. 实战案例
6.1 创建一个简单的 API 测试集合
-
创建集合:
- 创建一个名为 “Simple API Tests” 的集合。
- 添加 GET 请求
/api/posts
和 POST 请求/api/posts
。
-
编写测试脚本:
- 对 GET 请求编写测试脚本,验证响应状态码和数据格式。
- 对 POST 请求编写测试脚本,验证数据创建和响应内容。
示例:
GET 请求测试脚本:
pm.test("Status code is 200", function () {pm.response.to.have.status(200);
});
pm.test("Response should be JSON", function () {pm.response.to.be.json;
});
POST 请求测试脚本:
pm.test("Status code is 201", function () {pm.response.to.have.status(201);
});
pm.test("Response should contain ID", function () {pm.response.to.have.jsonBody('id');
});
7. 总结
Postman 是一个功能强大的 API 测试工具,能够显著提高 API 开发和测试的效率
相关文章:
Postman 接口测试详解
Postman 接口测试详解 Postman 接口测试详解1. Postman 基础知识1.1 什么是 Postman?1.2 Postman 的主要功能 2. 安装与设置2.1 安装 Postman2.2 创建 Postman 账户 3. Postman 的基本操作3.1 创建和发送请求3.2 解析响应数据3.3 使用环境和变量 4. 进阶功能4.1 编写…...

【JavaEE】线程状态
目录 前言 一.线程状态图 二.线程状态 1.初始状态(NEW) 2.运行状态(RUNNING) 3.等待状态(WAITING) 4.超时等待(TIMED_WAITING) 5.阻塞状态(BLOCKED) 6.终止状态(TERMINATED) 三.线程状态间的转换 四.总结 前言 线程状态及其状态转换…...

C++笔记之编译过程和面向对象
回顾: “abcd”//数据类型 字符串常量 const char *p"abc"; new STU const char *//8 指针的内存空间 int float 指针的内存空间 p 指针指向的内存空间 "abc" 取决于字符串长度 指针变量的内容一级指针 指针变量的地址二级指针 …...

ModuleNotFoundError: No module named ‘tqdm‘
报错信息: tqdm是一个快速、可扩展的Python进度条库,用于展示迭代器的长循环执行进度。 解决:通过以下命令安装 使用conda命令安装 conda install tqdm使用pip安装: pip install tqdm...

东京电影节公布2024年竞赛片评审团成员并对其业绩分别进行评介 没什么含金量
第37届东京国际电影节竞赛单元评审团名单正式公布。 周五,电影节组织者宣布,香港电影制片人杜琪峰、匈牙利电影制片人伊尔迪科恩耶迪、日本女演员桥本爱和法国女演员基娅拉马斯楚安尼将与之前宣布的评审团主席梁朝伟一起担任 2024 年主竞赛评审团成员。 …...
智能景区垃圾识别系统:基于YOLO的深度学习实现
基于深度学习的景区垃圾识别系统(UI界面YOLOv8/v7/v6/v5代码训练数据集) 1. 引言 景区垃圾识别是环保管理的重要任务之一。传统的人工清理方式效率低、成本高,而借助深度学习技术可以实现自动化的垃圾检测与识别,提高景区的清洁…...

ventoy和微pe可以共存吗?ventoy和pe共存使用教程
Ventoy新一代多系统启动U盘解决方案。国产开源U盘启动制作工具,支持Legacy BIOS和UEFI模式,理论上几乎支持任何ISO镜像文件,支持加载多个不同类型的ISO文件启动,无需反复地格式化U盘,插入U盘安装写入就能制作成可引导的…...
如何获取和安装SSL证书
SSL(Secure Sockets Layer)证书是用于加密网站服务器和客户端之间通信的一种数字证书。它通过HTTPS协议保护数据传输的安全性,防止数据被窃听或篡改。本文将指导您如何为您的网站获取并安装SSL证书。 步骤1:选择SSL证书提供商 首…...
makefile在IC设计中的使用笔记
1 makefile在IC设计中的地位 关于makefile的详细介绍可以参考第一个连接,里面的内容很多也很详细。但在数字IC设计中,并不会把所有的用法都用到,下面记录一下主要用到的规则。 2 IC设计涉及到的主要用法 2.1 变量的定义和使用 在makefile…...

Suno声称在受版权保护的音乐上训练模型属于“合理使用“
继美国唱片业协会(RIAA) 最近对音乐生成初创公司 Udio 和 Suno 提起诉讼之后,Suno 在周四提交的一份法庭文件中承认,该公司确实使用了受版权保护的歌曲来训练其人工智能模型。但它声称,根据合理使用原则,这…...

Java | Leetcode Java题解之第316题去除重复字母
题目: 题解: class Solution {public String removeDuplicateLetters(String s) {boolean[] vis new boolean[26];int[] num new int[26];for (int i 0; i < s.length(); i) {num[s.charAt(i) - a];}StringBuffer sb new StringBuffer();for (in…...

Taro学习记录
一、安装taro-cli 二、项目文件 三、项目搭建 1、Eslint配置 在项目生成的 .eslintrc 中进行配置 {"extends": ["taro/react"], //一个配置文件,可以被基础配置中的已启用的规则继承"parser": "babel/eslint-parser…...
Spring Cache框架详解
Spring Cache框架详解 Spring Cache是Spring框架提供的一个强大的缓存抽象层,旨在简化缓存技术的集成和使用。自Spring 3.1版本开始,Spring Cache就被引入以支持在Spring应用程序中添加缓存功能。随着Spring版本的迭代,Spring Cache的功能日…...
解决Html iframe 内嵌video标签导致视频无法全屏展示的问题
原因: 由于浏览器的安全策略所限制的。为了防止恶意网站利用全屏播放功能进行滥用或欺骗用户,浏览器对iframe中的视频播放做了限制。 在iframe标签中播放视频时,浏览器会根据安全策略阻止视频全屏播放。这是因为iframe标签中的内容被认为是第…...

谷粒商城实战笔记-110~114-全文检索-ElasticSearch-查询
文章目录 一,110-全文检索-ElasticSearch-进阶-两种查询方式二,111-全文检索-ElasticSearch-进阶-QueryDSL基本使用&match_all三,112-全文检索-ElasticSearch-进阶-match全文检索四,113-全文检索-ElasticSearch-进阶-match_ph…...

【开源】嵌入式Linux(IMX6U)应用层综合项目(1)--云平台调试APP
目录 1.简介 1.1功能介绍 1.2技术栈介绍 1.3演示视频 1.4硬件介绍 2.软件设计 2.1连接阿里云 2.2云平台调试UI 2.3Ui_main.c界面切换处理文件 2.4.main函数 3.结尾(附网盘链接) 1.简介 此文章并不是教程,只能当作笔者的学习分享&…...
AI人工智能分析王楚钦球拍被踩事件的真相
在2024年巴黎奥运会乒乓球混双决赛的热烈氛围中,中国队王楚钦与孙颖莎以出色的表现夺得金牌,然而,赛后发生的一起意外事件——王楚钦的球拍被踩坏,引起了广泛关注和热议。为了探寻这一事件的真相,我们可以借助AI人工智…...

C++客户端Qt开发——多线程编程(一)
多线程编程(一) ①QThread 在Qt中,多线程的处理一般是通过QThread类来实现。 QThread代表一个在应用程序中可以独立控制的线程,也可以和进程中的其他线程共享数据。 QThread对象管理程序中的一个控制线程。 run() 线程的入口…...
安装pnpm
安装pnpm(Performant npm),即高性能的npm包管理工具,可以通过多种方式进行。以下是详细的安装步骤: 一、通过npm全局安装 打开命令行工具:在你的计算机上打开命令行工具,例如Windows的CMD、Pow…...
CSS平移实现双开门效果
CSS平移实现双开门效果 一共要三张图片,一张作为父级背景,两张为兄弟左右布局 父子结构布局 一张作为父级背景,两张为兄弟左右布局。之后添加鼠标悬停效果,两张子图分别从左右平移 [外链图片转存失败,源站可能有防盗链机制,建议…...

深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...

MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...
LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用
中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...

渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...
Modbus RTU与Modbus TCP详解指南
目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...