mock虚拟接口技术

一、什么是mock

mock指的就是使用mock创建出来的一个虚拟的接口

二、对于测试人员而言,我们为什么要使用mock

当我们进行接口测试时,如果对应的接口还没有开发好,但是我们又需要用到这个接口响应的信息,这个时候我们就可以使用mock技术给我们创建一个虚拟接口

三、如何实现mock

我们要创建mock数据,还有mock服务

要想创建mock服务,首先我们要下载一个mock工具,他是jar文件

我们可以在Github上 找到这个.jar包,这里分享一下地址

GitHub - dreamhead/moco: Easy Setup Stub Server

 我们不需要下载它的所有项目,往下翻找到 Quick Start下载即可

 注意这是个jar包,不要解压

 接下来我们新建一个.json文件,写.json文件用什么写都行,HbuildX,Pycharm,VScode都可以,不推荐用记事本写,因为看着会很乱,缩进也不方便

[{"description":"这是我们使用mock模拟第一个接口","request":{"uri":"/demo1"},"response":{"text":"helloworld"}}]

我们看这段代码,在这里面description就是代表注释,不会执行

注意只能用这种方法注释,什么//  /**/  # 等各种语言的注释都不能用只能用description

 request这面写的使我们的请求

里面是uri, 不是url,注意别写错了,后面跟一个接口地址,因为是我们模拟的接口,所以地址怎么写都行,看自己的爱好

 response这里面写的是返回信息

这里我们让它返回一个text信息,叫做helloword!!!

 这是最基本的写法,我们还可以设定它是什么类型的接口,比如GET和POST请求都可以模拟,还有提交方式,比如表单,JSON,XML等等,写完以后我们就启动服务

打开命令提示符

java -jar moco-runner-1.3.0-standalone.jar http -p 9090 -c test.json

 moco-runner-1.3.0-standalone.jar是你下载的.jar包的放的位置,你放什么位置就替换上

-p 9090 我们给他提供一个端口号,最好是一万以外的端口号

http 开启http服务

test.json 这是上面写的json文件的地址

输入完我们就能看到开启了服务,如果输入发现报错无法启动服务,那大概率是里面内容有错误,注意标点符号,单词错误,符号只能是英文标点,不能用中文

然后打开浏览器输入http://localhost/demo1,我们就能访问这个接口,还能看到返回内容,如果不想用浏览器看我们也可以用Postman,操作一样

三、GET方式提交

 mock 模拟get类型的有参提交:

[{"description":"这是我们使用mock模拟第一个接口","request":{"uri":"/demo1","queries":{"username":"lisi","password":"123456"}},"response":{"text":"helloworld have parmas"}}]

 这里提交了一个queries,提交内容是json格式的

一个文件可以写多个mock接口,之间用隔开就行了,他这个是热更新的,只要启动了服务在里面编辑就能实时使用,不需要再关闭开启服务

接下来我们用postman来访问这个接口

注意:GET请求后面跟提交信息

http://localhost/demo1?username=dice&password=123456

 可以看到这里面手动写了一个username=dice&password=123456,这样才能正常看到返回信息,如果用postman我们只需要在下面写入这些信息就行

四、POST方式提交

mock 模拟post类型的表单提交

[{"description":"这是我们使用mock模拟第一个接口","request":{"uri":"/demo1","method":"post","headers":{"content-type":"application/x-www-form-urlencoded"},"forms":{"username":"lisi","password":"123456"}},"response":{"text":"helloworld have parmas"}}
]

 我们看到在request里面添加了一个

"method":"post"

这是表示post请求

"headers":{"content-type":"application/x-www-form-urlencoded"}

这里面写的是头部提交,其实可写可不写

"forms":{"username":"lisi","password":"123456"}

这时候我们可以看到 forms里面是请求,跟GET不一样,注意一下

五、post类型的json数据提交

{"description":"这是我们使用mock模拟josn请求的提交","request":{"uri":"/json/demo1","method":"post","headers":{"content-type":"application/json"},"json":{"username":"lisi","password":"123456"}},"response":{"text":"helloworld have parmas"}}

依旧是改变了请求提交,改为json

六、模拟post类型,响应数据是json

    {"description":"这是我们使用mock响应信息有响应的状态码的","request":{"uri":"/demo3","method":"post","headers":{"content-type":"application/json"},"json":{"username":"lisi","password":"123456"}},"response":{"status":200,"headers":{"Content-Type":"application/json;charset=utf-8"},"json":{"code":200,"message":"操作成功","token":"34234234234jkjfojsfojsdifojofsd"}}}

这里我们更改了返回的信息,更改为json的返回

注意:

"headers":{
                "Content-Type":"application/json;charset=utf-8"
            }

Content-Type不要写错大小写,写错的话返回信息中有中文就会乱码

七、模拟请求转发的操作

    {"description":"演示一个重定向操作","request":{"uri":"/demo4"},"redirectTo":"https://www.baidu.com"}

 这个很简单,我们只要加上转发的地址就行了

八,链接到一起

[{"description":"这是我们使用mock模拟第一个接口","request":{"uri":"/demo1"},"response":{"text":"helloworld"}},{"description":"这是我们使用mock模拟GET接口","request":{"uri":"/demo1","queries":{"username":"lisi","password":"123456"}},"response":{"text":"helloworld have parmas"}},{"description":"这是第一个mock模拟的POST请求接口","request":{"uri":"/dicedome1","method":"post","forms":{"username":"DICE","password":"123456"}},"response":{"text":"hellowword!!!"}},{"description":"mock模拟的PSOTD的JSON接口","request":{"uri":"/dicedome2","method":"post","headers":{"content-type":"application/json"},"json":{"username":"DICE","password":"123456"}},"response":{"text":"hellowword!!!"}},{"description":"模拟状态码200返回操作成功以及token","request":{"uri":"/dicedome3","method":"post","headers":{"content-type":"application/json"},"json":{"username":"DICE","password":"123456"}},"response":{"status":200,"headers":{"description":"这里的Content-Type注意大小写,不然会乱码","Content-Type":"application/json;charset=utf-8"},"json":{"code":200,"message":"操作成功","token":"156hjkrd4153sdgrs2315"}}},{"description":"模拟跳转","request":{"uri":"/dicedome4"},"redirectTo":"https://www.bing.com"}
]

把各个地方都连接起来,用逗号隔开

这些东西能复制就不要自己写,因为非常容易出错

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

邮件发送高级功能详解:HTML格式、附件添加与SSL/TLS加密连接

目录 一、邮件HTML格式设置 1.1 HTML邮件的优势 1.2 HTML邮件的编写 二、添加附件 2.1 附件的重要性 2.2 添加附件的代码示例 2.3 注意事项 三、使用SSL/TLS加密连接 3.1 SSL/TLS加密的重要性 3.2 SSL/TLS加密的工作原理 3.3 在邮件发送中启用SSL/TLS 3.3.1 邮件客…

智能算法躲避拥堵,高德企业用车上线“动态选路服务”为出行提效

近日,高德企业用车正式上线了一项全新服务——“动态选路服务”,旨在基于智能算法,动态规避突发拥堵路线,为企业用车用户提供更便捷、智能的出行方案。 以技术着眼细节,高德企业用车在帮助企业用车用户节约出行时间和…

飞睿智能实时雷达活体探测传感器模块,智能家居静止检测实时感知人员有无

随着科技的飞速发展,我们的生活正在经历着未有的创新。在这个创新的浪潮中,实时雷达活体探测传感器模块的技术正逐渐崭露头角,以其独特的优势为我们的生活带来安全与便捷。今天,我们就来详细探讨一下这项技术,看看它是…

TCL25届校招测评笔试TAS人才测评题库:高分攻略真题分析

🌟 职场新人必看:TCL校招测评全解析 🌟 亲爱的小伙伴们,你是否正准备踏入职场,或是对即将到来的校招感到既兴奋又紧张?今天,我将带你深入了解TCL校招中的TAS人才测评,让你在面试前做…

MyBatis - 动态SQL

前言 我们在某网站填写个人信息时,时常会遇到可以选填的空(即可填,可不填),由于之前讲过的Java中的SQL语句都是固定的,且我们不可能对所有情况都写出与之对应的插入语句(太过繁琐)&…

最新简洁大方的自动发卡网站源码/鲸发卡v11.61系统源码/修复版

源码简介: 最新简洁大方的自动发卡网站源码,它就是鲸发卡v11.61系统源码,它是修复版。 说到鲸发卡系统,鲸发卡系统在发卡圈很多人都知道的,它是市面最好发卡系统之一,操作起来简单得很,界面也…

03-Docker下载加速

03-Docker下载加速 docker下载加速 方式1:使用 网易数帆、阿里云等容器镜像仓库进行下载。 网易数帆官网:https://sf.163.com/ 例如,下载网易数帆镜像中的mysql。(网易数帆的地址为 hub.c.163.com,网易数帆对dockerh…

Protobuf:基本概念与使用流程

Protobuf:基本概念与使用流程 基本概念Linux 安装使用流程.proto文件编译使用 运行机制 基本概念 在进行网络编程时,经常需要进行数据传输,只有双方主机都保证数据格式的一致性,才能保证数据被正常解析。这个过程称为序列化与反序…

Android平台Unity3D下如何同时播放多路RTMP|RTSP流?

技术背景 好多开发者,提到希望在Unity的Android头显终端,播放2路以上RTMP或RTSP流,在设备性能一般的情况下,对Unity下的RTMP|RTSP播放器提出了更高的要求。实际上,我们在前几年发布Unity下直播播放模块的时候&#xf…

CTFHub技能树-SQL注入-Cookie注入

使用bp发现cookie的注入点 id1,发现为数字型 首先使用联合查询 id 1 order by 2 id 1 order by 3发现2的时候有回显,而3的时候无回显 Cookie: id-1 union select database(),user() 后面开始库->表->列->数据 Cookie: id-1 union select 1…

Gin中间件

Gin框架允许开发者在处理请求的过程中,加入用户自己的钩子(Hook)函数。这个钩子函数就叫中间件,中间件适合处理一些公共的业务逻辑,比如登录认证、权限校验、数据分页、记录日志、耗时统计等。 定义中间件 Gin中的中…

上半年亏损扩大/百亿资产重组终止,路畅科技如何“脱困”?

在智能网联汽车市场形势一片大好的前提下,路畅科技上半年的营收却出现了下滑,并且亏损也进一步扩大。 2024年半年度报告显示,路畅科技营业收入1.35亿元,同比下滑7.83%;实现归属上市公司股东的净利润为亏损2491.99万元…

一篇讲完CSS的核心内容

目录 一 、引言 1.1CSS概念 二、 CSS简介 2.1 什么是CSS 2.2 CSS能干什么 2.3 CSS书写规范 2.4 基础语法 三、 CSS导入方式 3.1 内嵌方式(内联方式) 3.2 内部方式 3.3 外部方式 四、 CSS选择器 4.1 基本选择器 [重点] 4.2 属性选择器 五、 CSS属性 5.1 文字属性…

sheng的学习笔记-AI-强化学习(Reinforcement Learning, RL)

AI目录:sheng的学习笔记-AI目录-CSDN博客 基础知识 什么是强化学习 强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体&#…

【RabbitMQ】RabbitMQ 的概念以及使用RabbitMQ编写生产者消费者代码

目录 1. RabbitMQ 核心概念 1.1生产者和消费者 1.2 Connection和Channel 1.3 Virtual host 1.4 Queue 1.5 Exchange 1.6 RabbitMO工作流程 2. AMQP 3.RabbitMO快速入门 3.1.引入依赖 3.2.编写生产者代码 ​3.3.编写消费者代码 4.源码 1. RabbitMQ 核心概念 在安装…

Blender软件三大渲染器Eevee、Cycles、Workbench对比解析

Blender 是一款强大的开源3D制作平台,提供了从建模、雕刻、动画到渲染、后期制作的一整套工具,广泛应用于电影、游戏、建筑、艺术等领域。 渲染101云渲染云渲6666 相比于其他平台,如 Autodesk Maya、3ds Max 或 Cinema 4D,Blende…

好用的idea方法分隔符插件

好用的idea方法分隔符插件

频率增强通道注意力机制(FECAM)学习总结

本文提出了一种新的频率增强通道注意力机制(FECAM),旨在解决时间序列预测中傅里叶变换因吉布斯现象导致的高频噪声问题。FECAM基于离散余弦变换,能自适应地模拟信道间的频率依赖性,有效避免预测误差。实验显示&#xf…

DANN GRL

域自适应是指在目标域与源域的数据分布不同但任务相同下的迁移学习,从而将模型在源域上的良好性能迁移到目标域上,极大地缓解目标域标签缺失严重导致模型性能受损的问题。 介绍一篇经典工作 DANN : 模型结构 在训练阶段需要预测如下两个任务…

委托的注册及注销+观察者模式

事件 委托变量如果公开出去,很不安全,外部可以随意调用 所以取消public,封闭它,我们可以自己书写两个方法,供外部注册与注销,委托调用在子方法里调用,这样封装委托变量可以使它更安全,这个就叫…