前言

科普界的老问题了。
大部分博客日志抄官方文档给的初始化样例,啥也不说。
看完除了会create,啥也不会了。
自食其力研究一下。

创建

略。

见document。

https://learning.postman.com/docs/designing-and-developing-your-api/mocking-data/mocking-with-examples/

或者随便找个中文博客。

推荐 https://zhuanlan.zhihu.com/p/371127186
但这篇文章的部分说法有误
比如文中称"Mock server只会采用最后创建的example"。 这是不对的。Mock Server会按规则匹配对应example。

创建之后,通过copy URL可以得到这个mock server的链接

默认作为公链

逻辑

postman逻辑结构有4层.

collection / folder / request / example

其中request是基本单位, 对应 http请求的寻址.

其实还有一个env,不过对这篇文章来说不重要。

1. request寻址

举例, 有一个http请求如下

axios.request({url:'/api'}
)

则需要对应地在postman中构建一个同地址的request.

{{url}}/api

值得注意的是, request中的地址部分, 前缀固定为"{{url}}"表示占位符.



此处输入 {{url}}/api 即可. 记得save.

最上面那个requestName = "New Request"可改可不改,就这样放着叫new request也无妨。
这个name是仅供postman使用者自己理解用的。
寻址是根据我们填写的url来的。

这样我们约定了一个地址为’/api’ 的接口。
接下来需要约定返回的数据。

2. example数据响应

request本身不能设置response data, 但example可以设置响应数据。

一个request下,可以添加多个example。
postman会根据http请求的不同,自动匹配对应的example,
然后返回该example中的response。

默认情况下,我们应该添加一个名为"Default"的example.
这个是缺省名字, 就像 index.html , __init__.py 之类的一样.
这样写是符合规范的。

下面演示区别

我新建了一个New Request, 设置地址为

{{url}}/login

之后添加两个example, 分别命名为"Default" 和 “login”.

在"Default"中,我约定接口的方法是"POST", 返回值写"postlogin".

在"example2"中, 约定接口方法为"GET", 返回值 “getlogin”。

分别发送请求

axios.get({url:'/login'
}).then((res) => {console.log(res.data)})
axios.post({url:'/login'
}).then((res) => {console.log(res.data)})

可以看到非常良好地匹配上了两个example。

除了method以外, 还能匹配http response code等.

postman的匹配算法说明

https://learning.postman.com/docs/designing-and-developing-your-api/mocking-data/matching-algorithm/

3.数据动态响应

postman可以通过占位符传参。

最经典的param传参就是我们很常见的 问号后面跟key:value对的形式。

但是,经过测试这种键值对的url无法在mock server中被解析。(

mock server绑定动态变量的唯一方式,是通过slash或者backslash符号分割。

例如 /{{varName}}

这里需要注意的是,在response Body部分,
也是会经过mustache语法匹配,将"{{userID}}"部分替换为相应变量值的字符串

也可以使用反斜杠
/api/example\{{userID}}

这样写也能取到变量。

postman 官方似乎不推荐动态响应。
他们更希望你考虑多个不同的example取值可能性,提前写死所有query。

数据底层

先去https://web.postman.co/settings/me/api-keys
创建一个api-key.

然后新建一个request.
headers里面写上 x-api-key

url填

https://api.getpostman.com/collections/

请求之后,在response里找到自己的mock name,和对应的uid.

之后把uid,拼接到url后面

https://api.getpostman.com/collections/13803897-9e2bc2b2-2829-4224-8af8-449f53993b82

再请求一次

这一步返回的是当前mock server下的所有配置信息.

可以看到的是,每个request作为对象存放在 "item"数组中.

request下有一个属性"response"数组.
每个example作为对象存放在其中

在response中能为每个example找到唯一"id".


{"collection": {"info": {"_postman_id": "9e2bc2b2-2829-4224-8af8-449f53993b82","name": "假接口","schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"},"item": [{"name": "New Request","id": "4eb688f1-7e0b-4c82-8708-3523eadc2f25","protocolProfileBehavior": {"disableBodyPruning": true},"request": {"method": "POST","header": [],"body": {"mode": "raw","raw": ""},"url": {"raw": "{{url}}/login","host": ["{{url}}"],"path": ["login"]}},"response": [{"id": "428746aa-b59a-4785-a04b-be667a9528e7","name": "Default","originalRequest": {"method": "POST","header": [{"key": "Content-Type","name": "Content-Type","value": "application/javascript","type": "text"}],"body": {"mode": "raw","raw": "","options": {"raw": {"language": "javascript"}}},"url": {"raw": "{{url}}/login","host": ["{{url}}"],"path": ["login"],"query": [{"key": "name","value": "{{name}}","disabled": true},{"key": "password","value": "{{password}}","disabled": true}]}},"code": 200,"_postman_previewlanguage": null,"header": null,"cookie": [],"responseTime": null,"body": "{\"id\":\"11\",\"name\":\"abc\",\"token\":\"postlogin\"}"},{"id": "f012d8fb-9622-4544-b0cf-05b1fbfee298","name": "example2","originalRequest": {"method": "GET","header": [],"body": {"mode": "raw","raw": ""},"url": {"raw": "{{url}}/login","host": ["{{url}}"],"path": ["login"]}},"_postman_previewlanguage": null,"header": null,"cookie": [],"responseTime": null,"body": "{\"id\":\"22\",\"name\":\"abc\",\"token\":\"getlogin\"}"}]},{"name": "/get","id": "7b7d5f1f-75cf-453f-8309-b277bf715d9e","protocolProfileBehavior": {"disableBodyPruning": true},"request": {"method": "GET","header": [],"body": {"mode": "raw","raw": ""},"url": {"raw": "{{url}}/get","host": ["{{url}}"],"path": ["get"]}},"response": [{"id": "81501999-3d8a-44af-aa66-8e008bffb714","name": "Default","originalRequest": {"method": "GET","header": [],"url": {"raw": "{{url}}/get","host": ["{{url}}"],"path": ["get"]}},"code": 200,"_postman_previewlanguage": null,"header": null,"cookie": [],"responseTime": null,"body": "{ id=1,name='user2', token = 'abcdefg2'}"}]},{"name": "/user","id": "f8e05f82-91cc-41e6-9bdc-e914585d696e","protocolProfileBehavior": {"disableBodyPruning": true},"request": {"method": "GET","header": [],"url": {"raw": "{{url}}/user/{{userID}}","host": ["{{url}}"],"path": ["user","{{userID}}"],"query": [{"key": "id","value": null,"type": "text","disabled": true}]}},"response": [{"id": "af2743bd-2a3d-43cd-9ad5-775c11f67000","name": "Default","originalRequest": {"method": "GET","header": [],"url": {"raw": "{{url}}/user/{{userID}}","host": ["{{url}}"],"path": ["user","{{userID}}"],"query": [{"key": "id","value": null,"type": "text","disabled": true}]}},"_postman_previewlanguage": null,"header": null,"cookie": [],"responseTime": null,"body": "{\r\n    \"id\": \"{{userID}}\",\r\n    \"roleID\": \"01\" \r\n}"}]},{"name": "/role","id": "4d8b2c42-f3fd-4737-9329-6ed345021b8a","protocolProfileBehavior": {"disableBodyPruning": true},"request": {"method": "GET","header": [],"url": {"raw": "{{url}}/role/{{roleID}}","host": ["{{url}}"],"path": ["role","{{roleID}}"]}},"response": [{"id": "0891e08d-0aa0-4075-a63c-782c1f310fa5","name": "/role","originalRequest": {"method": "GET","header": [],"url": {"raw": "{{url}}/role/{{roleID}}","host": ["{{url}}"],"path": ["role","{{roleID}}"]}},"_postman_previewlanguage": null,"header": null,"cookie": [],"responseTime": null,"body": "{\r\n    \"roleID\":\"{{roleID}}\",\r\n    \"userMenus\":\"uerMenus\"\r\n}"}]}]}
}

在headers中设置

x-mock-response-name 或者
x-mock-response-id

即可对应到我们需要的example.

相当于绕过匹配规则,显式指定返回哪条example的response.

参考https://learning.postman.com/docs/designing-and-developing-your-api/mocking-data/mock-with-api/

Postman Mock Server 使用相关推荐

  1. Postman搭建mock server接口

    在工作中,有时后端的接口还没有开发好,前端这时可以用postman的mock server来创建一个伪接口,访问这个伪接口来获得自己想要的响应. 在学习接口测试的过程中,也可以用postman的这个功 ...

  2. Postman高级功能Mock Server

    正常情况下,我们需要验证一个接口功能应该是如下情况: 测试过程中我们经常遇到服务提供方无法满足测试条件,无法开展测试工作,这样往往会导致测试计划变更,最终延迟测试进度. 为了有效避免上述窘境,Mock ...

  3. Postman接口Mock Server服务器设置

    目录 一.适用场景 二.设置步骤 2.1.创建一个mock server 2.2.配置mock server 2.3.Mock Servers创建成功一个新的mock地址 2.4.环境变量Enviro ...

  4. 1分钟搭建极简mock server

    摘自博客园:https://www.cnblogs.com/mikasama/p/9838480.html 1.无聊的背景.起源: 如今的业务系统越来越复杂庞大,各个功能直接的调用也是多如牛毛,但如果 ...

  5. python接口测试实战_Python接口测试实战5(下) - RESTful、Web Service及Mock Server

    课程目录 更多学习资料请加添加作者微信:superz-han获取 本节内容 REST及RESTful API Web Service XML解析 Mock Server REST及RESTful AP ...

  6. 基于django rest framework的mock server实践

    网上找了一下mock server的实现,发现python的基本都是基于flask来实现的,因最近在学django,就尝试用drf实现了下: A brief introduction of sui_m ...

  7. 如何用Postman mock服务?

    VOL 315 03 2021-11 今天距2022年58天 这是ITester软件测试小栈第315次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上 0 ...

  8. 搭建Mock Server实践(一)理论篇

    背景 在我司 S 产品测试时,日常工作有百分之 70 是需要跟接口测试打交道,搭建的 MockServer 有数十个. 接触过多个搭建 MockServer 平台,整理成文,分享之. 目录 part1 ...

  9. 走进Java接口测试之简单快速的Mock Server Moco

    文章目录 一.引言 二.简介 三.原理 四.使用 1.约定请求 URI 2.约定请求 Queries 3.约定请求 Get 方法 4.约定请求 Post 方法 5.约定请求 Headers 6.约定请 ...

  10. 软件测试 接口测试 接口鉴权 token鉴权 Mock Server 接口加解密 接口签名sign

    文章目录 1 接口鉴权 1.1 cookie鉴权 1.2 session鉴权 1.3 token鉴权 1.4 Postman的鉴权方式 2 Mock Server 3 接口加解密 3.1 加密方式 3 ...

最新文章

  1. 深度学习中的反向卷积
  2. 怎么安装python3-centos编译安装python3怎么做?
  3. 参数 ByVal 和 ByRef 区别
  4. 在xcode4中使用cocos2d 2.x很顺利的
  5. 复习Javascript专题(二):闭包,内存,以及垃圾回收机制
  6. 安装 | Anaconda3下载链接
  7. Dubbo(四)之xml配置方式
  8. jsp思维导图_2019年经济法基础思维导图
  9. BugkuCTF-MISC题这是一张单纯的图片
  10. 记一次生成唯一ID的问题
  11. 【2】二级C语言中那些易错的概念题
  12. opencv-api warpAffine
  13. 2014蓝桥杯:李白打酒;奇怪的分式(枚举,最大公约数)
  14. VCIP2020:基于深度学习的HEVC帧内预测的非线性变换
  15. 公众号采集文章插件下载-支持各大网站自动采集发布的公众号插件
  16. (python)bing搜索引擎API接入测试
  17. 老版TP-Link路由器设置固定时间上网
  18. 苹果手机怎么创建php,怎么在苹果官网注册Apple ID?在网页上创建Apple ID教程
  19. Codeforces Round #797 (Div. 3) F. Shifting String题解
  20. DCloud使用小结

热门文章

  1. 如何在苹果Mac上保存终端命令?
  2. Word经典技巧大全
  3. 自动驾驶—高精度地图or人工智能or其他
  4. 如何安装树莓派鱼眼摄像头模块
  5. gpgga格式读取MATLAB,gpgga数据格式
  6. MT2503环境搭建步骤及注意事项
  7. C# IntPtr转struct
  8. 爱帮网“搜索+社区”就地展开
  9. 拼音模糊查询+java,jquery拼音模糊查询
  10. js获取浏览器信息及版本(兼容IE)