接口测试之:Postman工具进阶教程。

2023-10-27

1、引言

了解小鱼的人都知道, 小鱼喜欢使用工具,但是不喜欢去写工具教程,
毕竟这种工具教程:一度娘,千千万
但是,最近小鱼在面试过程中,也发现一个很奇怪的现象
只打开过Postman工具,就说过自己很了解Postman,
使用的有多牛多牛,然而,我问了基本的几个问题,就露馅了!

小鱼的面试特点:简历中你能写,小鱼就能聊(由浅入深的聊);
不管是框架级,工具级,代码级还是流程级

为了能让各位求职者,跟面试官关于postman的使用,能扯上半个小时,
小鱼还是决定,把Postman的进阶教程整理汇总并share出来。

如果不是最近测试开发候选人的技术能力让我有些吃惊,
不然我真的不会去整理这篇博文。

因为关注小鱼博客的人,都知道,小鱼最近要推出 全链路压测专栏系列博文。
这也是小鱼默默的规划了两个月的产物。
因为全链路压测专栏规划的是33篇,所以,也是持续更新的专栏。

在这里插入图片描述
言归正传,咱们今天这篇,来讲Postman的进阶使用。

2、Postman详细教程

2.1 选择Postman的理由

市面上接口测试工具那么多,为什么偏偏对Postman情有独钟?
无非以下几个原因:

  • 简单易用 : 要使用Postman,你只需登录自己的账户,只要在电脑上安装了Postman应用程序,就可以方便地随时随地访问文件。
  • 使用集合 : Postman允许用户为他们的API调用创建集合。每个集合可以创建子文件夹和多个请求。这有助于组织测试结构。
  • 多人协作 : 可以导入或导出集合和环境,从而方便共享文件。直接使用链接还可以用于共享集合。
  • 创建环境 : 创建多个环境有助于减少测试重复(DEV/QA/STG/UAT/PROD),因为可以为不同的环境使用相同的集合。这是参数化发生的地方,将在后续介绍。
  • 创建测试 : 测试检查点(如验证HTTP响应状态是否成功)可以添加到每个API调用中,这有助于确保测试覆盖率。
  • 自动化测试 : 通过使用集合Runner或Newman,可以在多个迭代中运行测试,节省了重复测试的时间。
  • 调试 : Postman控制台有助于检查已检索到的数据,从而易于调试测试。
  • 持续集成:通过其支持持续集成的能力,可以维护开发实践。

2.2 安装

在使用工具前,第一步就是安装。
所以,Postman 也需要安装

这里说一下:Postman的起家,是Chrome浏览器的一个插件,由于使用的人越来越多,所以,后来索性就开发成一个接口工具。

  • 网址:https://www.postman.com/downloads/
  • 安装步骤:一直默认安装即可(也可以自定义安装)
  • 登录:注册账号并登录(账号免费注册)

登录后界面如下在这里插入图片描述

2.3 工作区功能介绍

  • New:在这里创建新的请求、集合或环境;还可以创建更高级的文档、Mock Server 和 Monitor以及API。
  • Import:这用于导入集合或环境。有一些选项,例如从文件,文件夹导入,链接或粘贴原始文本。
  • Runner:可以通过Collection Runner执行自动化测试。后续介绍。
  • Open New:打开一个新的标签,Postman窗口或Runner窗口。
  • My Workspace : 可以单独或以团队的形式创建新的工作区。
  • Invite : 通过邀请团队成员在工作空间上进行协同工作。
  • History: 所有请求的历史记录,这样可以很容易地跟踪你所做的操作。
  • Collections : 通过创建集合来组织你的测试套件。每个集合可能有子文件夹和多个请求。请求或文件夹也可以被复制。
  • Request tab : 这将显示您正在处理的请求的标题。默认对于没有标题的请求会显示“Untitled Request”。
  • HTTP Request - 单击它将显示不同请求的下拉列表,例如 GET, POST, COPY, DELETE, etc. 在测试中,最常用的请求是GET和POST。
  • Request URL - 也称为端点,显示API的URL。.
  • Save - 如果对请求进行了更改,必须单击save,这样新更改才不会丢失或覆盖。
  • Params - 在这里将编写请求所需的参数,比如Key - Value。
  • Authorization - 为了访问api,需要适当的授权。它可以是Username、Password、Token等形式。
  • Headers - 请求头信息
  • Body - 请求体信息,一般在POST中才会使用到
  • Pre-request Script - 请求之前 先执行脚本,使用设置环境的预请求脚本来确保在正确的环境中运行测试。
  • Tests - 这些脚本是在请求期间执行的。进行测试非常重要,因为它设置检查点来验证响应状态是否正常、检索的数据是否符合预期以及其他测试。
  • Settings - 最新版本的有设置,一般用不到。

在这里插入图片描述

2.4 接口类型请求

2.4.1 Get请求处理

Get请求用于从指定的URL获取信息,不会对端点进行任何更改。
在这里我们使用如下的URL作为演示:

https://jsonplaceholder.typicode.com/users	

在Postman的工作区中:

  • 选择HTTP请求方式为GET
  • 在URL区域输入 链接
  • 点击 “Send”按钮
  • 你将看到下方返回200状态码
  • 在正文中应该有10个用户结果,表明您的测试已经成功运行。

在这里插入图片描述

2.4.2 Post请求处理

Post请求与Get请求不同,因为存在用户向端点添加数据的数据操作。使用之前GET 请求中相同数据,现在添加我们自己的用户。
在这里插入图片描述

  • 步骤1:创建一个新请求图片
  • 步骤2:在新请求中
    ①选择HTTP请求方式为GET
    ②在URL区域输入 链接:https://jsonplaceholder.typicode.com/users
    ③切换到Body选项
    在这里插入图片描述
  • 步骤3:Body选项
    ①选中raw选项
    ②选择JSON
    在这里插入图片描述
  • 步骤4:复制前面GET请求返回的json内容的第一节
    更改id为11,更改name以及uesrname和email
[
    {
        "id": 11,
        "name": "Krishna Rungta",
        "username": "Bret",
        "email": "Sincere@april.biz
	",
        "address": {
            "street": "Kulas Light",
            "suite": "Apt. 556",
            "city": "Gwenborough",
            "zipcode": "92998-3874",
            "geo": {
                "lat": "-37.3159",
                "lng": "81.1496"
            }
        },
        "phone": "1-770-736-8031 x56442",
        "website": "hildegard.org",
        "company": {
            "name": "Romaguera-Crona",
            "catchPhrase": "Multi-layered client-server neural-net",
            "bs": "harness real-time e-markets"
        }
    }
]

在这里插入图片描述
在这里插入图片描述

  • 步骤5:发送请求
    ①完成上述的信息输入,点击Send按钮
    ②Status:应该是201,显示为创建成功
    ③在Body里返回数据
    在这里插入图片描述

2.4.3 请求参数化

数据参数化是Postman最有用的特征之一。你可以将使用到的变量进行参数化,而不是使用不同的数据创建相同的请求,这样会事半功倍,简洁明了。
这些数据可以来自数据文件或环境变量。参数化有助于避免重复相同的测试,可用于自动化迭代测试。

参数通过使用双花括号创建:{{sample}}。
比如下面的请求:
在这里插入图片描述

创建一个参数化get请求

  • 步骤1: 创建一个参数化get请求
    ①将HTTP请求设置为GET
    ②输入URL:https://jsonplaceholder.typicode.com/users;将链接的域名部分替换为参数,例如{{url}}。请求url现在应该是{{url}}/users。
    ③点击Send按钮。
    应该没有响应,因为我们没有设置参数的源,如下图:
    在这里插入图片描述
  • 步骤2:使用环境设置所需的参数
    ①使用环境设置所需的参数
    ②单击Edit将该变量设置为可在所有集合中使用的全局环境。
    在这里插入图片描述
  • 步骤3:变量–variable
    ①将名称设置为url,该url为https://jsonplaceholder.typicode.com
    ②点击保存按钮
    在这里插入图片描述
  • 步骤4:如果看到下面截图的样式,请单击Close
    在这里插入图片描述
  • 步骤5:回到你的Get请求页面,然后单击发送Send按钮,Get请求应该就会返回结果了,如下图:
    在这里插入图片描述

2.5 创建Postman Tests

Postman Tests在请求中添加JavaScript代码来协助验证结果,如:成功或失败状态、预期结果的比较等等。
通常从pm.test开始。它可以与断言相比较,验证其他工具中可用的命令。
接下来创建一个包含Tests的请求:

  • 步骤1: 创建一个Get请求
    ①切换到Tests选项,右边是代码片段选项。
    ②从右边的代码片段选项里面选中 “Status code: Code is 200”
    ③JS代码就自动出现在窗口中
    在这里插入图片描述
  • 步骤2:点击发送请求按钮。测试结果就显示出来了,如下图:
    在这里插入图片描述
  • 步骤3:回到Tests选项卡,让我们添加另一个测试。这次我们将比较预期结果和实际结果。
    在右边的SNIPPETS区域选择"Response body:JSON value check"选项,我们将检查Leanne Graham是否拥有userid 1。
    在这里插入图片描述
  • 步骤4
    ①将代码中的“Your Test Name”替换为“Check if user with id1 is Leanne Graham”,以便测试名称确切描述我们想测试的内容。
    ②使用jsonData[0].name代替jsonData.value; 获取路径,在获取结果之前检查Body。因为Leanne Graham是userid 1,所以jsonData在第一个结果中,这个结果应该从0开始。如果你想获得第二个结果,那么对后续结果使用jsonData[1] 即可。
    ③在eql中,输入“Leanne Graham”
pm.test("Check if user with id1 is Leanne Graham", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData[0].name).to.eql("Leanne Graham");
});
  • 步骤5: 点击发送请求,可以看到你的请求之后测试结果中有两项显示测试通过。
    在这里插入图片描述

2.6 创建测试集合

集合在组织测试套件中扮演着重要的角色。它可以被导入和导出,使得在团队之间共享集合变得很容易。在本教程中,我们将学习如何创建和执行集合。

  • 步骤1: 单击页面左上角的New按钮,如下图:
    在这里插入图片描述
  • 步骤2:选择Collection(集合). 创建collection窗口弹出,如下图
    在这里插入图片描述
  • 步骤3: 输入所需的集合名称和描述,然后单击create。
    在这里插入图片描述
  • 步骤4:和前面的Get请求一样,点击保存。
  • 步骤5:测试集合
    ①选择Postman 测试集合(Test Collection)。
    ②点击保存Postman Test Collection
    在这里插入图片描述
  • 步骤6: Postman test collection现在应该包含了一个请求
  • 步骤7:重复上述的Step4-5,继续创建请求,这样,测试集合就应该有2个请求了,如下图。
    在这里插入图片描述

2.7 运行Collection Runner 测试集合

  • 步骤1: 单击页面顶部导入按钮旁边的Runner按钮,如下图。
    在这里插入图片描述
  • 步骤2:Collection Runner页面应该出现如下所示。以下是对各个字段的描述
    在这里插入图片描述
  • 步骤3: 做如下设置,运行你的测试集合

①选择Postman测试集合-集合迭代次数为3
②设置延迟为2500毫秒
③点击Start Run按钮
在这里插入图片描述

  • 步骤4: 单击Run按钮后将显示Run结果页。根据延迟的不同,你应该在测试执行的同时看到显示的结果。

①一旦测试完成,你就可以看到测试状态是通过还是失败,以及每个迭代的结果。
②你将看到Get请求的Pass状态;
③由于我们没有任何Post测试,所以应该会出现请求没有任何测试的消息。
在这里插入图片描述
可以出在请求中进行测试是多么重要,这样你就可以验证HTTP请求状态是否成功,以及是否创建或检索了数据。

3、总结

看到这,今天的分享,就快要结束了。
我们来回顾一下,今天主要的内容:

  • Postman的安装
  • 工作区功能介绍
  • 列举接口请求类型的处理方式
  • 请求参数化
  • 测试集合的创建
  • 测试集合的运行

一个整体的流程,大概就是这样。

完全掌握这些功能操作流程,也就能跟面试官扯上半个小时了。

当然,我们的目的,是为了完全的掌握,而不是为了应付面试官!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

接口测试之:Postman工具进阶教程。 的相关文章

  • 在java中将StreamWriter转换为OutputStream?

    我正在尝试使用 System setOut 将 System out 重定向到字符串 它需要一个 PrintStream 有什么方法可以将 StringWriter 转换为 Stream 以便我可以将其传递给 setOut 吗 你不能完全这
  • 尝试使用 Eclipse 启动 Glassfish 服务器时出现 org.apache.catalina.LifecycleException

    我一直忙于使用 angularjs 前端构建一个 REST 应用程序 使用 MAVEN jersey quickstart webapp 使用 GLASSFISH Web 服务器在 Eclipse 上开发 今天 当我开始对项目进行一些开发时
  • 在 Java Swing 中检测 JScrollPane 上的 mouseClick 事件

    如果我有这样的东西 我可以使用布尔标志 performAdjustment 控制自动滚动 static boolean performAdjustment true JTextArea textArea new JTextArea JScr
  • 如何自定义BlockingQueue的阻塞行为

    我想创建一个阻塞队列 它根据自定义规则而不是队列中的项目数量来阻止生产者 例如 生产者生成一些文件并放入队列中 消费者经过一番分析后将它们转移到特定位置 对于上述场景 如果队列中的总文件大小达到某个阈值 我希望生产者等待生成新文件 如果总大
  • Firebase 查询 Or'ing whereEqualTo 以获得可能值的列表

    我见过之前针对早期版本的 Firebase 提出过这个问题 https stackoverflow com questions 26700924 query based on multiple where clauses in fireba
  • 如何使用 SLF4J 和 Log4j2 记录 FATAL(或任何自定义日志级别)

    我有那些具体的要求 需要能够登录FATAL level 需要使用SLF4J 需要使用Log4j2 现在 这是我的执行 final Logger logger LoggerFactory getLogger HelloWorld class
  • JavaEE 8 教程,在 hello1 项目上部署失败

    我正在尝试学习 Java EE 8 我遵循了官方指南https javaee github io tutorial https javaee github io tutorial 但我有这个问题 cargo maven2 plugin 1
  • 有效地查找正则表达式的所有重叠匹配项

    这是后续与 java 正则表达式匹配的所有重叠子字符串 https stackoverflow com q 11303309 244526 有没有办法让这段代码更快 public static void allMatches String
  • JUnit Eclipse 显示 System.out.print() 的

    我正在使用 JUnit 3 和 Eclipse 3 4 当我运行 JUnit 测试用例时 一切正常并且测试完美完成 唯一的事情是我想查看我正在运行的类的输出 所有类都具有一些输出值的基本 System out print 因此 当我运行测试
  • 方法不必要地被调用?

    我有一个 BaseActivity 它可以通过其他所有活动进行扩展 问题是 每当用户离开 暂停 活动时 我都会将音乐静音 我也不再接听电话 问题是 onPause每当用户在活动之间切换时就会被调用 这意味着应用程序不必要地静音和停止tele
  • 如何在 OpenAPI 3.0 中定义字节数组

    我正在将 API 从 Swagger 2 0 迁移到 OpenAPI 3 0 在 DTO 中 我有一个指定为字节数组的字段 Swagger 对 DTO 的定义 Job type object properties body type str
  • 业务代表与服务定位器

    Business Delegate 和 Service Locator 之间有什么区别 两者都负责封装查找和创建机制 如果 Business Delegate 使用 Service Locator 来隐藏查找和创建机制 那么 Busines
  • LibGdx 如何使用 OrthographicCamera 滚动?

    我已经找了 10 个小时 字面意思 我已经完成了 我需要问一下 事情是我正在学习如何使用 LibGdx 来编写 Java 游戏 我正在做一个水平太空飞船游戏 所以 我最糟糕的问题是我不知道如何滚动 我认为绘制会更好地解释 我想绘制一个巨大的
  • 如何自定义JProgressBar?

    我正在制作一个启动器 我想要一个自定义的进度栏 我已经做了一些研究 并且可以使用 JavaFX 从未用它做过任何事情 并且可以通过替换 UI 来实现 我正在寻找一个具有圆形边缘和圆形填充的酒吧 像这样的事情 package gui impo
  • grails 上的同步块在 Windows 上有效,但在 Linux 上无效

    我有一个 grails 应用程序 它依赖于服务中的同步块 当我在 Windows 上运行它时 同步按预期工作 但当我在 ams linux 上运行时 会出现 StaleObjectStateException 该问题在以下示例中重现 cla
  • 用 Java 创建迷宫求解算法

    我被分配了用 Java 创建迷宫求解器的任务 这是任务 Write an application that finds a path through a maze The maze should be read from a file A
  • java中的比较器链

    正在阅读Oracle 关于接口的 Java 教程 https docs oracle com javase tutorial java IandI createinterface html其中给出了一个例子Card 打牌 我试图理解接口中的
  • Java SE + Spring Data + Hibernate

    我正在尝试使用 Spring Data Hibernate 启动 Java SE 应用程序 并且到目前为止已经完成了以下操作 配置文件 Configuration PropertySource classpath hibernate pro
  • 日期时间解析异常

    解析日期时 我的代码中不断出现异常错误 日期看起来像这样 Wed May 21 00 00 00 EDT 2008 这是尝试读取它的代码 DateTimeFormatter formatter DateTimeFormatter ofPat
  • 将隐藏(生物识别)数据附加到 pdf 上的数字签名

    我想知道是否可以使用 iText 我用于签名 或 Java 中的其他工具在 pdf 上添加生物识别数据 我会更好地解释一下 在手写板上签名时 我会收集签名信息 例如笔压 签名速度等 我想将这些信息 java中的变量 与pdf上的签名一起存储

随机推荐

  • 使用docker运行mysql:5.7

    本文档使用docker容器运行mysql 5 7版本 2 1 docker拉取mysql 5 7镜像 docker pull mysql 5 7 2 2 查看镜像是否拉取成功 docker image ls 2 3 启动mysql 5 7
  • [网络安全自学篇] 十五.Python攻防之多线程、C段扫描和数据库编程(二)

    这是作者的系列网络安全自学教程 主要是关于网安工具和实践操作的在线笔记 特分享出来与博友共勉 希望您们喜欢 一起进步 前文分享了Python网络攻防相关基础知识 包括正则表达式 Web编程和套接字通信 本文将继续分析Python攻防之多线程
  • 第十四届蓝桥杯省赛C++B组个人代码(未检验)

    2023 年 4 月 8 日是蓝桥杯省赛 今年我参加的是 C 组 B 组 虽然说打得不是很理想 不过好在个人感觉省一问题不是很大 反正只要是省一对得多对得少都一样 比赛中的代码是没法保存的 所以我借着新鲜的记忆 重新把我会写的题的代码都码了
  • pycharm,idea,clion的配置

    html 运行的快捷键 alt f2 的位置 这里修改快捷键为 ctrl alt 0 转载于 https www cnblogs com zach0812 p 11517247 html
  • Cookie实现自动登录案例实现

    大家好 我是一名入门的菜鸟 如果你不经意间翻开了我的文章 谢谢您 您的支持是我前进的动力 让我们一起加油 由于不是名牌大学 只是一个普普通通的专科生 所以 我想通过自己的努力来获得我想要的 我不会放弃我的梦想 我也曾幻想着我成功的时候在朋友
  • 利用Graphviz画神经网络框架图

    文章目录 前言 dot画神经网络图 简单神经网络 大型神经网络 伪 Python 画神经网络图 大型神经网络 前言 做了神经网络这么久 偶尔想画一下自己模型的架构图 但是又无从下手 因为网络一般都比较复杂 如果自己手动利用Visio画的画又
  • Windows自带的超强命令行磁盘管理工具

    不知道大家在装Windows系统的时候 使用原版安装的多不多 GHOST版系统是个好东西 能够让不懂计算机的操作者能够一键装好系统 并且GHOST版的制作大神们还针对系统做了非常多的优化操作 虽然 优化 这个词最近才有了一些恐怖的意思 不过
  • Linux服务器挂载ntfs移动硬盘

    Linux服务器挂载ntfs移动硬盘 转载来源 本文链接 https blog csdn net wojiuwangla article details 81029603 服务器上的一些移动硬盘需要备份到数据 公司买了个500G的机房 带上
  • 【Windows + Linux】专业级:安装操作系统 + 多系统 + GhostCast Server PXE 网刻基础坑精通详解

    目录 前言 1 BIOS 和 UEFI 与 MBR 和 GPT 的装机简述 GPT MBR 硬盘分区表模式 BOOT 引导流程 启动管理器 如何选择一种 BOOT Mode 启动模式 Legacy UEFI 总结 BIOS 设置的硬盘模式
  • Android 报错问题总结(持续更新中)

    1 解决Failed to load the JNI shared library jvm dll 很有可能是Eclipse版本和jdk版本不一致 一般在Windows 7 64位系统下 32位的jdk存放在Program Files x8
  • 记录一次swagger空指针异常

    昨日编码过程中 突然间发现swagger文档页面打不开了 后台报空指针 注销了所有新写的代码后 发现了问题 是疏忽大意导致的 原因是 方法类中的Vo字段名和ApiImplicitParam中name值不同 真是粗心大意害死人啊 还好没提交
  • Nodejs制作自定义中间件

    对于Nodejs的中间件我想各位小伙伴都有所了解 下边我就以制作一个自定义的处理表单数据的中间件为例 告诉大家如何自作一个属于自己的自定义中间件 1 创建一个util js文件 用于封装编写自定义的表单数据处理中间件 导入querystri
  • 数据库的读写锁

    今天看数据库事务的ACID时 涉及到了并发下的读写锁 由于课程上了太久也没太多印象了 一开始就照着多线程的字面意思去理解 读的时候加锁和写的时候加锁 但是根据这个理解后面的逻辑变得很奇怪 因此重新复习了一下读 共享 锁和写 排他 锁 写锁
  • 在外包干了三年,我废了..… 不吹不黑!

    往期热门文章 1 用鸿蒙跑了个 hello world2 还在写大量 if 来判断 试试用一个规则执行器来替代它3 Spring Boot中的线程池 你真的会用么 4 重磅推荐几个接私活的脚手架利器 5 MySQL究竟是怎么执行的 看完终于
  • vivado 中手动添加 pynq类型板

    随着人工智能的火热 算法的并行计算越来越受到追捧 而pynq python zynq 作为可以用python为高级语言变相调用fpga的模块的soc板也越来越受到人工智能和硬件相关学生的喜爱 而然 Vivado 2019之前的很多版本是默认
  • Xmind 免费安装使用教程

    目录 一 百度云下载 二 安装 一 百度云下载 1 链接 https pan baidu com s 1ij6ta0nnsdoiN5puJ2pDEQhttps pan baidu com s 1ij6ta0nnsdoiN5puJ2pDEQh
  • 将数组中的元素*2

    import java util Arrays public class TestDemo1 public static int func int array for int i 0 i
  • VUE2 使用高德地图(入门超详细)

    创建项目就不用说了吧 高德地图的api https lbs amap com 进去后按照提示注册登陆 点击左侧应用管理 我的应用 点击右上角创建新应用 给新创建的应用添加key 红框圈起来的是必填项 提交后就有key和密钥两个重要的东西 项
  • Tesla AI day中感知部分的详细解析(一)——Transformer在图像领域的应用

    目录 前言 Transformer Input Embedding Masked Multi Head Attention Sequence mask Positional embbedings Swin Transformer Input
  • 接口测试之:Postman工具进阶教程。

    Postman进阶教程 1 引言 2 Postman详细教程 2 1 选择Postman的理由 2 2 安装 2 3 工作区功能介绍 2 4 接口类型请求 2 4 1 Get请求处理 2 4 2 Post请求处理 2 4 3 请求参数化 2