当前位置: 首页 > news >正文

使用 Postman 进行 API 测试:从入门到精通

使用 Postman 进行 API 测试:从入门到精通

  • 使用 Postman 进行 API 测试:从入门到精通
    • 一、什么是 API 测试?
    • 二、Postman 简介
    • 三、环境搭建
    • 四、API 测试流程
      • 1. 收集 API 文档
      • 2. 发送基本请求
        • 示例:发送 GET 请求
        • 示例代码(JavaScript):
      • 3. 设置请求参数
        • 示例:发送 POST 请求
        • 示例代码(JavaScript):
      • 4. 验证响应
        • 示例:设置断言
      • 5. 创建测试集合
        • 创建一个简单的 Collection:
    • 五、高级技巧和最佳实践
      • 1. 使用环境变量
        • 示例:设置环境变量
      • 2. 使用 Pre-request 和 Post-request 脚本
        • 示例:使用 Pre-request 脚本
      • 3. 创建自动化测试脚本
        • 示例:创建一个简单的自动化脚本
    • 六、工具链集成
        • 示例:使用 Newman 运行 Collection
    • 七、总结与建议

使用 Postman 进行 API 测试:从入门到精通

在现代软件开发中,API(应用程序编程接口)测试是确保系统稳定性和可靠性的重要环节。而 Postman 是一个功能强大且易于使用的工具,可以帮助开发者快速、高效地完成 API 测试任务。


一、什么是 API 测试?

API 测试是指通过发送请求到 API 并验证响应是否符合预期来确保 API 的功能性和稳定性。常见的 API 测试类型包括:

  1. 功能性测试:验证 API 是否按设计要求工作。
  2. 性能测试:评估 API 在高负载下的表现。
  3. 安全测试:检查 API 是否存在漏洞,如 SQL 注入、跨站脚本(XSS)等。
  4. 回归测试:在修改代码后,确保新增的功能不会破坏现有功能。

二、Postman 简介

Postman 是一个广泛使用的 API 开发和测试工具,支持 HTTP 和 HTTPS 请求的发送与接收。它提供了丰富的功能,包括:

  • 收集和分析 API 响应。
  • 使用断言验证响应内容。
  • 创建自动化测试脚本(JavaScript)。
  • 支持团队协作,便于管理和共享测试用例。

三、环境搭建

在开始使用 Postman 进行 API 测试之前,请确保你已经完成了以下准备工作:

安装 Postman
下载并安装 Postman:https://www.postman.com/downloads/


四、API 测试流程

1. 收集 API 文档

在进行 API 测试之前,你需要获取被测试 API 的详细文档。通常,API 文档会包含以下信息:

  • 请求 URL
  • 请求方法(GET, POST, PUT, DELETE 等)
  • 请求参数(路径参数、查询参数、请求体参数等)
  • 响应格式(JSON, XML 等)

2. 发送基本请求

使用 Postman,你可以轻松发送各种类型的 HTTP 请求。以下是一个简单的示例:

示例:发送 GET 请求

步骤如下:

  1. 打开 Postman。
  2. 输入请求 URL,例如 https://api.example.com/users
  3. 选择请求方法为 GET。
  4. 点击“Send”按钮。
示例代码(JavaScript):
const request = require('request');request.get('https://api.example.com/users', (error, response, body) => {if (error) {console.error('Error:', error);return;}console.log('Response:', JSON.parse(body));
});

3. 设置请求参数

在 Postman 中,你可以通过以下方式设置请求参数:

  • 路径参数:在 URL 中直接填写。
  • 查询参数:在“Query Parameters”选项卡中添加。
  • 请求体参数:在“Body”选项卡中选择合适的格式(如 form-data, x-www-form-urlencoded, raw 等)。
示例:发送 POST 请求

步骤如下:

  1. 在 Postman 中,输入请求 URL,例如 https://api.example.com/users
  2. 选择请求方法为 POST。
  3. 在“Body”选项卡中选择“form-data”,并添加表单字段,例如:
    • name: John Doe
    • email: john@example.com
  4. 点击“Send”按钮。
示例代码(JavaScript):
const request = require('request');const options = {method: 'POST',url: 'https://api.example.com/users',headers: {'Content-Type': 'application/x-www-form-urlencoded'},form: {name: 'John Doe',email: 'john@example.com'}
};request(options, (error, response, body) => {if (error) {console.error('Error:', error);return;}console.log('Response:', JSON.parse(body));
});

4. 验证响应

在 Postman 中,你可以通过以下方式验证 API 响应:

  • 查看响应内容:直接在“Body”选项卡中查看响应内容。
  • 设置断言:使用 Postman 的断言功能,检查响应状态码、头信息和正文内容是否符合预期。
示例:设置断言
  1. 在 Postman 中,发送一个请求后,在右侧菜单中选择“Tests”选项卡。
  2. 添加以下代码来验证 HTTP 状态码为 200:
pm.responseStatusCode === 200;

5. 创建测试集合

为了更好地管理和执行多个 API 测试用例,你可以将它们组织到一个“Collection”中。Postman 提供了丰富的选项来管理你的测试用例。

创建一个简单的 Collection:
  1. 在 Postman 中,点击左侧的“Collections”图标。
  2. 点击“新建集合”,并输入名称(如“My API Tests”)。
  3. 将常用的测试请求拖动到该 Collection 中。

五、高级技巧和最佳实践

1. 使用环境变量

在 Postman 中,你可以使用环境变量来管理不同的配置,例如:

  • 请求 URL
  • API 密钥
  • 用户 ID 等。
示例:设置环境变量
  1. 在 Postman 中,点击右上角的齿轮图标,选择“Environments”。
  2. 添加一个新的环境,并配置相应的变量(如 baseUrl)。
  3. 在测试脚本中使用这些变量:
pm.environment.get('baseUrl') + '/users';

2. 使用 Pre-request 和 Post-request 脚本

Pre-request 和 Post-request 脚本允许你在发送请求之前或之后执行自定义操作,例如设置请求头、清理数据等。

示例:使用 Pre-request 脚本
  1. 在 Postman 中,选择“Pre-request”选项卡。
  2. 添加以下代码来设置 API 令牌:
pm.request.headers.add("Authorization", "Bearer " + pm.environment.get('apiKey'));

3. 创建自动化测试脚本

通过编写 JavaScript 脚本,你可以将 Postman 的操作自动化。这非常适合需要频繁执行的测试用例。

示例:创建一个简单的自动化脚本
  1. 在 Postman 中,选择“Tests”选项卡。
  2. 添加以下代码来验证响应内容:
const response = pm.response.json();
pm.expect(response.name).to.equal("John Doe");

六、工具链集成

Postman 提供了与其他工具和平台的集成能力,例如:

  1. Newman:用于命令行运行 Postman 收集的测试用例。
  2. CI/CD 工具(如 Jenkins、GitHub Actions):将 API 测试集成到持续集成流程中。
示例:使用 Newman 运行 Collection
  1. 安装 Newman:
    npm install -g newman
    
  2. 在终端中运行以下命令:
    newman run my-collection.postman.json
    

七、总结与建议

Postman 是一个功能强大且易于使用的 API 测试工具,适合个人和团队使用。

以下是一些推荐的资源:

  • Postman 官方文档
  • Newman 文档
  • API 测试最佳实践

相关文章:

使用 Postman 进行 API 测试:从入门到精通

使用 Postman 进行 API 测试:从入门到精通 使用 Postman 进行 API 测试:从入门到精通一、什么是 API 测试?二、Postman 简介三、环境搭建四、API 测试流程1. 收集 API 文档2. 发送基本请求示例:发送 GET 请求示例代码(…...

K8s 分布式存储后端(K8s Distributed Storage Backend)

K8s 分布式存储后端 在 K8s 中实现分布式存储后端对于管理跨集群的持久数据、确保高可用性、可扩展性和可靠性至关重要。在 K8s 环境中,应用程序通常被容器化并跨多个节点部署。虽然 K8s 可以有效处理无状态应用程序,但有状态应用程序需要持久存储来维护…...

基于docker搭建Kafka集群,使用KRaft方式搭建,摒弃Zookeeper

KAFKA基于docker使用KRaft进行集群搭建 环境:已成功搭建kafka服务 可点击链接跳转至安装kafka-3.8.0版本 并启用SASL认证 教程 使用基于Zookeeper方式搭建集群教程 kafka-3.8.0版本 并启用SASL认证 教程 搭建kafka-ui可视化工具 192.168.2.91 192.168.2.92 192…...

Centos7 安装 RabbitMQ与Erlang

1、下载erlang和rabbitmq wget https://github.com/rabbitmq/erlang-rpm/releases/download/v23.3.4.5/erlang-23.3.4.5-1.el7.x86_64.rpmwget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.9.16/rabbitmq-server-3.9.16-1.el7.noarch.rpm2、安装erlang…...

mybatis-plus的分页查询简单使用

引入依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><version>3.5.5</version></dependency>在yml中配置启动mybatis-plus插件 mybatis-plus:configuration:#…...

剑指 Offer II 014. 字符串中的变位词

comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20014.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%8F%98%E4%BD%8D%E8%AF%8D/README.md 剑指 Offer II 014. 字符串中的变位词 题目描述 给定两个字符…...

富唯智能复合机器人拓展工业新维度

富唯智能复合机器人是富唯智能倾力打造的一款集高度自动化、智能化和多功能性于一体的机器人。它融合了机械、电子、计算机、传感器等多个领域的前沿技术&#xff0c;通过精密的算法和控制系统&#xff0c;实现了对复杂生产环境的快速适应和高效作业。 富唯智能复合机器人的特点…...

【大数据技术】搭建完全分布式高可用大数据集群(Scala+Spark)

搭建完全分布式高可用大数据集群(Scala+Spark) scala-2.13.16.tgzspark-3.5.4-bin-without-hadoop.tgz注:请在阅读本篇文章前,将以上资源下载下来。 写在前面 本文主要介绍搭建完全分布式高可用集群Spark的详细步骤。 注意: 统一约定将软件安装包存放于虚拟机的/softwa…...

solidity高阶 -- 调用接口合约

在区块链开发中&#xff0c;Solidity 是一种广泛使用的智能合约编程语言&#xff0c;而接口合约&#xff08;Interface&#xff09;是 Solidity 中一个非常重要的概念。它为智能合约之间的交互提供了一种标准化的方式&#xff0c;使得合约之间的调用更加灵活、安全且易于管理。…...

若依框架使用(低级)

克隆源码 浏览器搜索若依&#xff0c;选择 RuoYi-Vue RuoYi-Vue RuoYi-Vue 重要的事情说三遍&#xff0c;进入gitee 下面这个页面&#xff08;注意红色框起来的部分&#xff09; 进入Gitee进行下载 我下载的是最新的springboot3 下载好后我们可以选择一个文件夹&#xff0…...

找不到 MSVCP120.dll

msvcr120.dll msvcr120.dll 是 Microsoft Visual C Redistributable 的一部分&#xff0c;属于 Visual Studio 2013&#xff08;VC 12.0&#xff09;的运行时组件。它的重要性取决于你运行的应用程序是否需要它。 重要性 依赖库&#xff1a;如果某个程序是用 Visual Studio 2…...

AI软件栈:LLVM分析(三)

LLVM IR 文章目录 CFG线性IR 主要采用CFG与线性IR组合描述 CFG *关键在于基本块&#xff08;Basic Block&#xff09;的定义 线性IR *关键来自于SSA&#xff0c;单静态赋值...

openwebui入门

1 简介 ‌Open WebUI‌&#xff08;网址是openwebui.com&#xff09;是一个高度可扩展、功能强大且用户友好的自托管Web用户界面&#xff0c;专为完全离线操作设计&#xff0c;编程语言是python。它支持对接Ollama和OpenAI兼容的API的大模型。‌ Open WebUI‌在架构上是一种中…...

Spark--如何理解RDD

1、概念 rdd是对数据集的逻辑表示&#xff0c;本身并不存储数据&#xff0c;只是封装了计算逻辑&#xff0c;并构建执行计划&#xff0c;通过保存血缘关系来记录rdd的执行过程和历史&#xff08;当一个rdd需要重算时&#xff0c;系统会根据血缘关系追溯到最初的数据源&#xff…...

CTFSHOW-WEB入门-PHP特性89-100

题目&#xff1a;web 89 题目&#xff1a;解题思路&#xff1a;这道题目涉及了两个函数&#xff1a;preg_match&#xff08;&#xff09;和intval&#xff08;&#xff09;简要介绍一下两个函数 preg_match&#xff08;&#xff09;用于对字符串进行正则表达式的匹配&#xff0…...

[250204] Mistral Small 3:小巧、快速、强大 | asdf 0.16.0 发布:Golang 重写带来性能飞跃

目录 Mistral AI 发布开源模型 Mistral Small 3&#xff1a;小巧、快速、强大asdf 0.16.0 版本发布&#xff1a;Golang 重写带来性能飞跃&#xff01; Mistral AI 发布开源模型 Mistral Small 3&#xff1a;小巧、快速、强大 法国人工智能初创公司 Mistral AI 发布了最新的开源…...

PySpark学习笔记5-SparkSQL

sparkSql的数据抽象有两种。 一类是data set适用于java和Scala 一类是data frame适用于java&#xff0c;Scala&#xff0c;python 将r d d转换为data frame #方式一 df spark.createDataFrame(rdd,schema[name,age]) #方式二 schema Structtype(). add(id,integertype(),nu…...

windows版的docker如何使用宿主机的GPU

windows版的docker使用宿主机的GPU的命令 命令如下 docker run -it --nethost --gpus all --name 容器名 -e NVIDIA_DRIVER_CAPABILITIEScompute,utility -e NVIDIA_VISIBLE_DEVICESall 镜像名效果 (transformer) rootdocker-desktop:/# python Python 3.9.0 (default, Nov 15 …...

Python爬虫:1药城店铺爬虫(完整代码)

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…...

代码随想录算法训练营打卡第55天:并查集相关问题;

Java并查集的模板 //并查集模板 class DisJoint{private int[] father;public DisJoint(int N) {father new int[N];for (int i 0; i < N; i){father[i] i;}}public int find(int n) {return n father[n] ? n : (father[n] find(father[n]));}public void join (int …...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...

数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 原创笔记&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 上一篇&#xff1a;《数据结构第4章 数组和广义表》…...

MySQL体系架构解析(三):MySQL目录与启动配置全解析

MySQL中的目录和文件 bin目录 在 MySQL 的安装目录下有一个特别重要的 bin 目录&#xff0c;这个目录下存放着许多可执行文件。与其他系统的可执行文件类似&#xff0c;这些可执行文件都是与服务器和客户端程序相关的。 启动MySQL服务器程序 在 UNIX 系统中&#xff0c;用…...