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

使用Postman创建Mock Server

这篇文章将教会大家如何利用 Postman,通过 Mock 的方式测试我们的 API。

什么是 Mock

Mock 是一项特殊的测试技巧,可以在没有依赖项的情况下进行单元测试。通常情况下,Mock 与其他方法的主要区别就是,用于取代代码依赖项的模拟对象允许设置期望值。简而言之,Mock 就是创建了一个对象,模拟真实对象的行为。

目的是什么

前端与后端的工作进度不同步,使得两方团队无法有效的完成工作。Postman 中的 Mock 服务器可以减轻团队开发过程中的这种不同步问题。开发可以在不启动后端的基础上,查看预期的响应结果。是一种快速开发的过程。

意义何在

在 API 开发的前期,构建 Mock 集合可以帮助开发团队之间清晰沟通,并尽快就预期结果达成一致。事实上,在开发过程中,所有的团队都可以并行工作,相互依赖的工作可以减少延期。

什么是 Mock 服务

Mock 服务不是一个真实的服务,他只是一个被伪装成真实服务的假服务。通过它,我们可以测试我们的 API 并检查结果正确与否。Postman 允许我们创建两种类型的 Mock 服务,私有的和公有的。

私有的 Mock 服务需要我们在请求头里面添加 Postman API key,例如:x-api-key:

公有 Mock 服务可以被任何人访问。所以使用过程中不需要添加 Postman API key。

如何使用 Postman 创建 Mock 服务

你可以点击工具栏里面的"New"按钮,或者在启动 Postman 的时候也会弹出这个选项。

我们需要按照下面的步骤将 Mock 的完整内容添加到既有的集合里面,然后通过 Postman 的 Echo 服务模拟调用 API 的过程:

1.发送请求(R1)
2.将请求(R1)保存到集合里面(C1)
3.将请求(R1)的响应保存到集合里面(C1)
4.为集合 C1 创建一个 Mock(M1)
5.使用 Mock 服务(M1)发送一个请求
6.使用查询参数进行匹配

步骤 1、发送请求(R1)

使用 Postman,发送一个 GET 请求到 https://postman-echo.com/get?test=123  响应结果如下图所示:

步骤 2、将请求(R1)保存到集合里面(C1)

点击 Save 按钮打开 SAVE REQUEST 对话框。你可以将请求保存到既有的集合里面,也可以新建一个集合保存。这里我们新建一个集合 C1,后续可以在 Collections 页签里面查看。

步骤 3、将请求(R1)的响应保存到集合里面(C1)

点击 Save Response 按钮,保存请求 R1 的返回结果。

这会跳转到下图所示的界面,在这里,可以将请求响应信息保存起来作为示例使用,作为示例使用。我们把这个示例叫做 P**1**

关于请求的方式、URL、状态都很重要,可以用于评估创建的 Mock 会返回哪些响应。检查一下所有的这些元素是否符合要求,之后再点击 Save Example 按钮。点击左上角的返回按钮返回请求创建器,就可以在右上角看到我们创建的示例了,把它添加到我们的请求里面。

步骤 4、为集合 C1 创建一个 Mock(M1)

在 Postman 中,点击集合 C1 旁边的箭头 (▸) 打开详细信息页面,如果要打开 MOCK COLLECTION 对话框,在 Mocks 页签下面,点击 Create a Mock server 按钮。在这里,你可以把你的 Mock 服务包括在特定的环境里面,或者选择公有或者私有类型,作为默认的 Mock 服务类型。

当你 Mock 了某个集合之后,集合的详细信息会显示在 Mock 页签下面。你也可以看到 接下来的步骤里面需要 Mock 的 URL。

步骤 5、使用 Mock 服务(M1)发送一个请求

目前我们已经设计好了我们的 Mock 服务 M1,现在我们试着请求一下这个 Mock 的端口。复制这个 Mock 的 URL,然后粘贴到我们上一步创建的 Mock 服务的新请求里面。

Mock 服务的响应结果完全取决于你之前保存的示例以及包含的 URL 和请求方法类型。我们之前保存了一个示例,请求路径是 /get,请求方法是 GET。因此,向 /get 路径发送一个 GET 请求会得到符合我们预期的响应。

步骤 6、使用查询参数进行匹配

Postman 对 Mock 服务的功能进行了扩展,可根据匹配的查询参数返回不同的响应结果。Mock 服务会根据查询参数匹配保存的示例。所以当你有且仅有查询参数存在差异的时候,并且你希望在相同的请求路径上为不同的查询参数模拟不同的响应时,Postman Mock 服务器将返回与请求路径和相应的查询参数匹配的确切答案。

结语

我们已经了解了如何创建集合、保存请求、保存示例、创建 Mock 并使用。

Postman 帐户每月提供有限数量的免费 Mock 服务器调用。你可以在 Postman API 或帐户使用页面查看你的使用限制。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关文章:

使用Postman创建Mock Server

这篇文章将教会大家如何利用 Postman,通过 Mock 的方式测试我们的 API。 什么是 Mock Mock 是一项特殊的测试技巧,可以在没有依赖项的情况下进行单元测试。通常情况下,Mock 与其他方法的主要区别就是,用于取代代码依赖项的模拟对…...

【古月居《ros入门21讲》学习笔记】15_ROS中的坐标系管理系统

目录 说明: 1. 机器人中的坐标变换 tf功能包能干什么? tf坐标变换如何实现 2. 小海龟跟随实验 安装 ros-melodic-turtle-tf 实验命令 运行效果 说明: 1. 本系列学习笔记基于B站:古月居《ROS入门21讲》课程,且使…...

初始linux:文件操作

目录 提示&#xff1a;以下指令均在Xshell 7 中进行 linux的理念 一、echo echo "字符串" 二、输出重定向 > > [文件] echo "字符串" > [文件] echo "字符串" > > [文件] 制作大文件 三、< 输入重定向与ca…...

iOS上传ipa使用可视化工具Transporter

文章目录 前言一、Transporter二、Appuploader三、iTMSTransporter总结 前言 最近为了让非开发人员上传IPA文件&#xff0c;特意找了一些方法&#xff0c;至于以前的ApplicationUploader已经不能用了&#xff0c;下面介绍两个工具可以上传IPA包。 一、Transporter 1、操作简单…...

解读《陆奇最新演讲实录—我的大模型世界观》

腾讯科技频道记者张小珺一篇《陆奇最新演讲实录—我的大模型世界观》刷爆朋友圈。文章知识点丰富、字里行间处处流淌着创业方法论和AI应用商机&#xff0c;含金量极高&#xff01; PS&#xff1a;一家之言、不求苟同。如有不爽之处&#xff0c;欢迎来 找我。 腾讯新闻原文&am…...

ChatGPT到底是如何运作?

自从2022年11月30日发布以来&#xff0c;ChatGPT一直占据着科技届的头条位置&#xff0c;随着苹果的创新能力下降&#xff0c;ChatGPT不断给大家带来震撼&#xff0c;2023年11月7日&#xff0c;首届OpenAI开发者大会在洛杉矶举行&#xff0c;业界普遍认为&#xff0c;OpenAI的开…...

学习Java第57天,Servlet的基本使用步骤

步骤1 开发一个web类型的module 步骤2 开发一个UserServlet public class UserServlet extends HttpServlet {Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 获取请求中的参数String usern…...

解决:ValueError: must have exactly one of create/read/write/append mode

解决&#xff1a;ValueError: must have exactly one of create/read/write/append mode 文章目录 解决&#xff1a;ValueError: must have exactly one of create/read/write/append mode背景报错问题报错翻译报错位置代码报错原因解决方法今天的分享就到此结束了 背景 在使用…...

大数据-之LibrA数据库系统告警处理(ALM-37014 Gaussdb进程锁文件已经存在)

告警解释 当集群中的CN实例或者DN实例锁文件创建失败时&#xff0c;产生该告警。 告警属性 告警ID 告警级别 可自动清除 37014 严重 是 告警参数 参数名称 参数含义 ServiceName 产生告警的服务名称 RoleName 产生告警的角色名称 HostName 产生告警的主机名 I…...

STM32 基础知识

1. STM32微控制器的核心特性是什么&#xff1f; STM32微控制器是基于ARM Cortex-M 处理器 &#xff0c; 它具有高性能处理能力和低功耗的特性 &#xff0c; 适合用于嵌入式系统STM32系列具有多种多样的内存大小和丰富的内置外设选项&#xff0c;包括 多通道ADC &#xff0c; 定…...

JVM——产生内存溢出原因

目录 1.产生内存溢出原因一 &#xff1a;代码中的内存泄漏1.案例1&#xff1a;equals()和hashCode()导致的内存泄漏问题&#xff1a;**正常情况**&#xff1a;**异常情况&#xff1a;**解决方案&#xff1a; 2.案例2&#xff1a;内部类引用外部类问题&#xff1a;解决方案&…...

关于X86机器上运行GnuCobol的研究

1.安装GnuCobol 当前的稳定版本是 3.1.2,已经在各种平台上进行了广泛测试,并已投入商用。 下载地址为: https://phoenixnap.dl.sourceforge.net/project/gnucobol/gnucobol/3.1/gnucobol- 3.1.2.tar.bz2 1)上传压缩包至x86服务器; 2)通过tar -xvf gnucobol-3.1.2.tar.bz2…...

open与openat的区别

Linux 中的 open 和 openat 系统调用都用于打开文件&#xff0c;但它们有一些区别。 一、函数原型 open 系统调用的原型 #include <fcntl.h>int open(const char *pathname, int flags, mode_t mode);pathname 是要打开的文件路径flags 是打开文件的标志mode 是文件的…...

人工智能与供应链行业融合:预测算法的通用化与实战化

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 让我们一起深入探索人工智能与供应链的融合&#xff0c;以及预测算法在实际应用中的价值&#xff01;&#x1f50d;&#x1f680; 文章目录 前言供应链预测算法的基本流程统计学习模型与机…...

Cytoscape学习教程

写在前面 今天分享的内容是自己遇到问题后,咨询社群里面的同学,帮忙解决的总结。 关于Cytoscape,对于做组学或生物信息学的同学基本是陌生的,可能有的同学用这个软件作图是非常溜的,做出来的网络图也是十分的好看,“可玩性”很高,就像前面分享的aPEAR包一样aPEAR包绘制…...

computed和watch相关

Computed本质是一个具备缓存的watcher&#xff0c;依赖的属性发生变化就会更新视图。 适用于计算比较消耗性能的计算场景。当表达式过于复杂时&#xff0c;在模板中放入过多逻辑会让模板难以维护&#xff0c;可以将复杂的逻辑放入计算属性中处理 computed擅长处理&#xff1a;一…...

反思一次效能提升

前天与一个大佬交流。想起自己在6年多前在团队里做的一次小小的效能提升。 改进前 在同一个产品团队&#xff0c;同时有前端工程师和后端工程师。他们经常需要共同协作完成features。 前端是一个传统的多页应用。前端渲染是由后端的velocity模板引擎实现的。 打包后&#xff0c…...

ElasticSearch之cat indices API

命令样例如下&#xff1a; curl -X GET "https://localhost:9200/_cat/indices?vtrue&pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPHQBEs5*lo7F9"执行结果输出如下&#xff1a; health status index uuid …...

Composer update 跳过指定依赖

在使用Compose进PHP 依赖管理只时&#xff0c;有时候我们可能希望忽略版本批配&#xff0c;即使依赖项的景新版本已经发布&#xff0c;也然续使用当前的乐本。这种情况下&#xff0c;我们可以使用Composer的 --ignore-platform-reqs 选项来实现 可以使用--ignore-platform-req…...

@RequestMapping详解:请求映射规则

目录 请求-相应模式&#xff1a; 设置请求映射规则RequestMapping POST 请求&#xff1a; GET 请求 请求-相应模式&#xff1a; 前端作为客户端向后端发送请求&#xff08;请求可以分为请求头和请求体两部分&#xff0c;请求头包含了一些元数据信息&#xff0c;如请求方式、…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...