Postman接口测试详解与进阶

news2024/11/26 21:37:15

Postman是一个功能强大的接口测试工具,它主要用于模拟用户发起的各类HTTP请求,从而验证响应中的结果数据是否和预期值相匹配。以下是关于Postman的详细介绍:
Postman是一个功能全面、使用便捷、支持多种HTTP请求类型、提供丰富的测试数据和配置管理功能,并且支持团队协作和云服务。无论是前端开发还是后端开发,Postman都可以提供强大的支持和帮助。

Postman的入门使用介绍, 可以参考:
Postman介绍和快速使用

Postman 的详细介绍

  1. 基本功能
    • Postman可以发送任何类型的HTTP请求(如GET、POST、PUT、DELETE等),并且能附带任何数量的参数和Headers。
    • 它支持各种额外的头部字段的添加,以及模拟普通表单数据、文件、图片、视频等数据请求。
    • Postman还提供测试数据和环境配置数据的导入导出功能,方便用户在不同环境间迁移数据。
  2. 特点与优势
    • 全流程支持:Postman是一个接口的开发和测试的全流程支持软件,它支持前端开发(如mock测试)和后端开发(如接口测试和开发接口文档)。
    • 云服务支持:支持云服务,使得用户可以随时随地无缝对接工作,同时提供数据同步功能,方便用户在不同设备间同步数据。
    • 团队协作:付费的Post Cloud用户可以创建自己的Team Library用于团队协作式测试,并能够将自己的测试收藏夹和用例数据分享给团队。
  3. 使用与配置
    • 环境变量:Postman支持全局环境变量和局部环境变量,方便用户在不同环境间切换和管理变量。
    • 集合与变量:用户可以创建集合(即一组API的集合)并在集合上绑定变量,这些变量只能给集合下的请求使用。
    • 预处理和断言:Postman支持使用JavaScript语法编写预处理脚本和断言,以增加测试的灵活性和准确性。
  4. 用户界面与功能区域
    • Postman的用户界面包括顶部菜单、工作区域、API管理、环境管理、Mock服务器设置、监控、工作流创建和历史记录等功能区域。
    • 用户可以通过顶部菜单进行文件操作、编辑、视图控制、帮助文档查看等操作。
    • 工作区域是Postman最主要的功能区域,用户可以在这里进行API的管理和测试。

使用Postman 测试http(s) 的请求

  1. 点击左上方的"New"按钮创建一个新的请求
    在这里插入图片描述

2.选择创建HTTP 请求
在这里插入图片描述

  1. 输入或选择请求方法(GET, POST, PUT, DELETE等)
    在这里插入图片描述

  2. 在"Enter request URL"字段中输入你要测试的 HTTPS URL。

  3. 如果需要,添加Headers、Params、Body等。
    在这里插入图片描述

  4. 点击"Send"按钮发送请求,并等待 Postman 返回响应

https 禁用证书

如果HTTPS 服务使用的是自签名证书或者处于开发环境,可以在 Postman 的设置中关闭 SSL 证书验证。

  • 转到 Postman 的设置(Settings)(点击左上角齿轮图标或顶部"File"菜单中的"Settings")。
    在这里插入图片描述

  • 点击"General"标签。

  • 禁用"SSL certificate verification"选项。
    在这里插入图片描述

使用Postman 测试带文件的请求

在Body中content-type请求头为multipart/form-data, 参数类型选择File之后就可以点击 “Select Files” 按钮选择文件了。

在这里插入图片描述

设置不同环境的变量

在 Postman 中设置不同环境(如开发环境 DEV、测试环境 QAS 和生产环境 PRD)的变量是一种有助于组织和管理 API 请求的做法。通过环境变量,您可以轻松地在不同环境中切换 API 的端点、凭据等参数,而无需每次都手动更改这些值。下面是设置不同环境变量的步骤:

1. 打开环境管理器

在 Postman 中,你可以通过点击左上角的眼睛图标(Inspect)打开环境管理器,然后点击"Environment"旁边的"Add"按钮来创建一个新的环境。
在这里插入图片描述

2. 创建各个环境

在新打开的窗口中,你可以给你的环境命名(例如“DEV”, “QAS”, “PRD”)并按需添加变量。

例如,你可以为开发环境“DEV”添加变量:

  • baseUrl - API服务器的根地址
  • apiKey - 用于访问API的密钥
  • 其他任何你需要在不同环境中变化的配置
例如,为 DEV 环境添加变量:
Variable    | Initial Value       | Current Value
----------- | ------------------- | -----------------
baseUrl     | https://api.dev.com | https://api.dev.com
apiKey      | 12345-dev           | 12345-dev
otherVar    | devValue            | devValue
3. 重复步骤 2,分别创建 QAS 和 PRD 环境:
  • QAS 环境的变量可能是:
Variable    | Initial Value       | Current Value
----------- | ------------------- | -----------------
baseUrl     | https://api.qas.com | https://api.qas.com
apiKey      | 12345-qas           | 12345-qas
otherVar    | qasValue            | qasValue
  • PRD 环境的变量可能是:
Variable    | Initial Value         | Current Value
----------- | --------------------- | ---------------------
baseUrl     | https://api.prd.com   | https://api.prd.com
apiKey      | 12345-prd             | 12345-prd
otherVar    | prdValue              | prdValue
4. 选择和切换环境

在设置完您的环境变量后,可以在 Postman 的环境下拉菜单中选择你要使用的当前环境。这个下拉菜单位于屏幕顶部中央偏右的位置,显示为 “No Environment” 或当前选定环境的名称。

5. 使用环境变量

在请求中,你现在可以使用双大括号 {{...}} 语法来引用环境变量,例如:

  • URL: {{baseUrl}}/myendpoint
  • Headers 或 Body: 使用{{apiKey}}或其他变量

以下是一个请求中使用环境变量的实例:

GET {{baseUrl}}/data HTTP/1.1
Authorization: Bearer {{apiKey}}

当您在 Postman 中发送这个请求,它会根据您所选择的当前环境来替换 {{baseUrl}}{{apiKey}}

通过设置和切换不同的环境,你可以快速地在开发、测试和生产环境之间迁移,而无需更改每个请求的个别参数。

将输出作为变量

在Postman中,可以通过使用测试脚本(Test Scripts)来捕获HTTP响应的输出,并将其存储为环境或全局变量。这使得你可以在后续请求中重用这些输出值。下面是怎样实现这一过程的详细步骤:

1. 发送请求并检查响应

首先,通过Postman发送一个API请求,然后在“响应”区域检查你感兴趣的数据。确定你希望作为变量存储的数据部分。

2. 编写测试脚本

在发送请求的同一界面,转到"Tests"标签。这是你编写JavaScript脚本,以程序方式处理响应并保存数据的地方。
在这里插入图片描述

3. 从响应中提取数据

使用pm.response.json()来解析JSON格式的响应体。然后,你可以根据需要访问响应体中的特定字段。

4. 存储变量

使用pm.environment.set("variableName", value)将值存储为环境变量,或者使用pm.globals.set("variableName", value)存储为全局变量。其中"variableName"是你希望赋予变量的名称,value是你从响应中提取的数据。

示例:

假设你的API响应包含一个JSON对象,如下所示:

{
    "userId": 1,
    "id": 10,
    "title": "Example Title",
    "body": "Hello, world!"
}

如果你想保存titlebody字段作为环境变量,你的测试脚本将如下所示:

// 解析响应体为JSON
let responseData = pm.response.json();

// 存储"title"和"body"为环境变量
pm.environment.set("title", responseData.title);
pm.environment.set("body", responseData.body);
5. 使用存储的变量

在将数据保存为变量之后,你就可以在后续请求中使用这些变量了。使用{{variableName}}语法来引用变量,如{{title}}{{body}}

注意:
  • 确保在发送请求之前选择正确的环境,若你使用环境变量的话。
  • 存储为变量的数据将在你选择的范围(环境或全局)中可用,这便于在多个请求之间共享数据。

使用这种方法,你可以有效地将Postman中的请求输出转换为可重复使用的变量,从而简化测试流程和数据管理。

环境变量和集合变量

在Postman中合理地使用环境变量和集合变量能极大地提高API测试和开发的效率。理解何时使用环境变量,何时使用集合变量是非常关键的。以下是一些最佳实践,可以帮助您合理规划和区分这两种类型的变量:

环境变量的最佳实践:

环境变量主要用于存储与特定环境相关的数据。对于那些随环境改变而变化的值,应该设置为环境变量,这样可以轻松地在不同的开发、测试以及生产环境中切换。

应设置为环境变量的信息包括但不限于:

  • API 端点的根 URL:不同的环境(开发、测试、生产)通常有不同的根 URL。
  • 认证令牌和API密钥:安全策略常要求在不同环境中使用不同的认证机制。
  • 数据库连接字符串:不同环境可能连接不同的数据库。
  • 特定服务的配置详情:如特定环境中某服务的可选配置等。

集合变量的最佳实践:

集合变量适用于在同一集合的所有请求中共享的数据,这些数据通常与环境无关。

应设置为集合变量的信息包括但不限于:

  • 常用的Header值:如内容类型 Content-Type: application/json 不随环境变化。
  • 请求参数:如分页大小 pageSize=50,如果这一值在各环境中均通用。
  • 固定的路径和参数:API在不同环境下路径未变的部分。
  • 检查点或固定的测试数据:用于测试的固定值,不依赖于环境的数据。

实例:

假定我们有一个处理订单的API,我们可能需要根据环境设置以下变量:

  • 环境变量

    • baseUrl:
      • Development: https://dev.api.example.com
      • Production: https://api.example.com
    • apiKey:
      • Development: devKey123
      • Production: prodKey456
  • 集合变量

    • defaultPageSize: 20
    • contentType: application/json

使用变量的示例:

在Postman中请求订单数据,可以使用如下方式:

GET {{baseUrl}}/orders?page=1&size={{defaultPageSize}}
Content-Type: {{contentType}}
Authorization: Bearer {{apiKey}}

这样,只需选择不同的环境,相应的baseUrlapiKey就会自动切换,而集合变量如defaultPageSizecontentType则保持不变,因为它们与环境无关。

环境变量与集合变量的适用

  • 环境变量:用于存储依赖于具体环境的设置。
  • 集合变量:用于存储与环境无关、在同一集合中多个请求间共享的信息。

正确地使用这两种类型的变量不仅可以使你的集合更加模块化和易于管理,还可以确保在不同环境之间切换时,你的API测试和开发过程更加顺畅和高效。



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

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

相关文章

铝型材挤压车间的数字孪生应用

图扑利用数字孪生技术,在铝型材挤压车间实现了生产线的全方位实时监控和优化。通过高精度三维建模和数据可视化,提升了效率和管理透明度,促进了智能制造和资源配置的优化。

【2024亲测无坑】在Centos.7虚拟机上安装Oracle 19C

目录 一、安装环境准备 1、linux虚拟机安装 2、虚拟机快照 3、空间检查&软件上传 二、Oracle软件安装 1.preinstall安装及其他配置准备 2.oracle安装 三、数据库实例的安装 1.netca——网络配置助手 2.dbca——数据库配置助手 四、ORACLE 19C 在linux centos 7上…

c++qt合并两张灰度图像

需求:将两张尺寸相同的灰度图像进行合并,合并后的图像,每个像素点灰度值为两张原图对应像素点灰度值之和。若超过255,则最大为255。 方法一: 将图像读取为cv::Mat,再调用opencv的cv::add方法,进…

Electron快速入门(一):用VS Code快速创建html+js+css编写的项目

创建一个文件夹(例如:start或者create-electron 都是小写英文字母有的插件才不会报错),并进入该文件夹,打开 vscode创建3个文件: 1. 名为 main.js 的文件是主进程 // main.js//用于控制应用程序寿命和创建…

网络安全的双刃守护:揭秘双算法SSL证书的智慧盾牌

双算法SSL证书,这一科技与智慧的结晶,如同夜空中最亮的双子星,照亮了数据传输的幽径。它不仅继承了传统SSL证书的精髓,确保信息在传递过程中的私密与完整,更创新性地融合了两种顶尖加密算法——RSA与SM2,犹…

gateway整合sentinel限流

官方文档:https://github.com/alibaba/Sentinel/wiki/%E7%BD%91%E5%85%B3%E9%99%90%E6%B5%81 从 1.6.0 版本开始,Sentinel 提供了 Spring Cloud Gateway 的适配模块,可以提供两种资源维度的限流: route 维度:即在 Spr…

STM32的通用定时器中断编程

如果遇到需要单片机产生严格时序的场景(比如DAC输出特定模拟信号,GPIO口控制模拟开关),延时函数可能就无法胜任了。最近在工作时公司上级教会了我使用“门票”思维(中断标志位)编写单片机裸机程序,今天写一…

预制舱变电站高压室巡检机器人系统

一、背景 预制舱变电站高压室由于空间狭小、设备紧凑,传统的巡检方式往往需要人工进入高压室进行巡检,不仅存在安全风险,而且巡检效率低下,难以满足日益增长的电力设备运维需求。 二、预制舱高压室巡检机器人系统 预制舱高压室巡…

QT MQTT (二)编译与集成

一、QT MQTT 提供 MQTT 客户端服务的 Qt 专用库基于标准化发布 / 订阅协议,用于在设备和组件之间可靠地共享数据。MQTT 是为保证状态正确性、满足高安全标准和交换最小数据而设计的协议,因此被广泛应用于各种分布式系统和物联网解决方案中。 Qt开发MQT…

【SAP Abap】一条SQL语句实现支持报表项配置的财务报表

【SAP Abap】一条SQL语句实现支持报表项配置的财务报表 1、业务背景2、配置项特殊处理3、实现方式(Hana Studio SQL语句)4、实现方式(Abap OpenSQL语句)5、总结 1、业务背景 在财务三大报表之外,业务需要使用类似的科…

[创业之路-121] :制造业企业的必备管理神器-ERP-企业唯一的盈利入口:销售管理

目录 一、ERP销售管理:卖产品 1.1 概述 1.2 核心功能 1. 客户管理: 2. 销售订单管理:最重要的功能**** 3. 销售发货管理: 4. 销售退货管理: 5. 销售统计分析: 二、用友ERP销售管理 2.1 概述 2.2…

UniApp 开发微信小程序教程(一):准备工作和环境搭建,项目结构和配置

文章目录 一、准备工作和环境搭建1. 安装 HBuilderX步骤: 2. 注册微信开发者账号步骤: 3. 创建 UniApp 项目步骤: 二、项目结构和配置1. UniApp 项目结构2. 配置微信小程序修改 manifest.json修改 pages.json 3. 添加首页文件index.vue 示例&…

Lynred在欧洲防务展上将展出新品——“HOT”红外传感器Seegnus。

Lynred在即将举办的巴黎欧洲防务展上将展出其令人瞩目的新品——“HOT”红外传感器Seegnus。这款专为战术视觉设计的大型阵列传感器,以其紧凑的封装和高分辨率的中波红外成像能力,无疑将为航空航天、国防和商业市场带来革命性的突破。 Seegnus传感器拥有…

【经典算法】LeetCode 8. 字符串转换整数 (atoi)(Java/C/Python3/Go实现含注释说明,Easy)

作者主页: 🔗进朱者赤的博客 精选专栏:🔗经典算法 作者简介:阿里非典型程序员一枚 ,记录在大厂的打怪升级之路。 一起学习Java、大数据、数据结构算法(公众号同名) ❤️觉得文章还…

蔚来汽车AI算法工程师,如何理解注意力?

大家好啊,我是董董灿。 今天分享一个上海蔚来汽车的AI算法岗位面试经验总结帖,面试岗位为算法工程师。 这次面试提到的问题,除了与实习相关内容和反问之外,面试官总共问了8个问题,主要集中在深度学习基础概念的理解上…

裁员裁到大动脉,是一种什么体验!

大家好啊,我是董董灿。 降本增效是每个当老板的人都喜欢挂在嘴边的口头禅,尤其是行业不景气,公司发展遇到瓶颈的时候。 大部分公司降本增效的手段其实非常相似,比较容易实施的手段也就那几种。 要么搞设备自动化和流程自动化&a…

Ubuntu 22.04.1 安装ubuntu有道词典时错误发生

1. Ubuntu环境版本 Linux lipan-Precision-T1700 6.5.0-26-generic #26~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue Mar 12 10:22:43 UTC 2 x86_64 x86_64 x86_64 GNU/Linux 2. 有道词典 下载ubuntu系统的deb安装包。 网易有道翻译-支持文本翻译、文档翻译、AIBox英文写作、智…

LoRa126X系列LoRa模块:专为物联网设计而生

LoRa126X是思为无线研发的一款应用于物联网应用的LoRa 前端模块系列,采用 Semtech 公司的 SX1262和SX1268 芯片。该系列模块具有小体积、低功耗,高灵敏度等特点,并且严格遵循无铅工艺生产和测试流程,符合 RoHS 和 Reach 环保标准。…

重学java 80.Junit单元测试

我总是着急的解释我自己,却忘了厚爱无需多言 —— 24.6.21 一、Junit介绍 1.概述 Junit是一个单元测试框架,可以代替main方法去执行其他的方法 2.作用 可以单独执行一个方法,测试该方法是否能跑通 3.注意 Junit是第三方工具,所以使用之前需要导入jar包 二、J…

HTML和CSS基础(一)

前言 HTML(HyperText Markup Language)是一种用于创建网页的标准标记语言。它由各种标签组成,这些标签定义了网页的结构和内容。HTML的早期形式诞生于1989年,由CERN的物理学家Tim Berners-Lee发明,最初用于在科学家之…