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.xdnf.cn/news/1544227.html

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

相关文章

学习threejs,绘制二维线

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言二、🍀绘制二维线1. ☘️…

筛子排序(SieveSort)

当你手头有了支持AVX-512(SIMD)的i9-11900K,你最想做什么? i9-11900K?现在都14代了,谁还用11代的? 但12代以上就没有AVX-512了! AVX-512有什么特别之处?有了这个硬件支…

Redis 的 Java 客户端有哪些?官方推荐哪个?

Redis 官网展示的 Java 客户端如下图所示,其中官方推荐的是标星的3个:Jedis、Redisson 和 lettuce。 Redis 的 Java 客户端中,Jedis、Lettuce 和 Redisson 是最常用的三种。以下是它们的详细比较: Jedis: 线程安全&…

安卓13设置动态修改设置显示版本号 版本号增加信息显示 android13增加序列号

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.编译6.彩蛋1.前言 设置 =》关于平板电脑 =》版本号 在这里显示了系统的一些信息,但是这里面的信息并不包含序列号之类的信息,我们修改下系统设置,在这里增加上相关的序列号。 2.问题分析…

【Linux】Linux基本命令

目录 文件和目录操作: ls cd pwd cp mv rm mkdir rmdir touch clear history which/whereis 文件查看和编辑: cat less head tail vi 或 vim sz/rz echo 系统信息和管理: su uname hostname df free top ps ki…

高可用集群keepalived---实战案例1

目录 一、环境: 二、文件的配置 1、server1 下载keepalived 创建etc下的keepalived目录,编辑配置文件 开机启动keepalived 安装Nginx 启动keepalived 2、server2 下载keepalived 创建etc下的keepalived目录,编辑配置文件 开机启动keepalived 安装Nginx 启动keepali…

软件企业毛利率正在变得越来越低

软件开发毛利率逐渐降低的现象可能受到多种因素的影响: 市场竞争加剧:随着软件行业的快速发展,市场上的软件产品和服务越来越多,竞争也越来越激烈。为了在市场上保持竞争力,软件企业可能不得不降低价格,这直…

【word密码】word怎么限制格式,但可以修改文字?

想要限制word文件中文字的格式,但是又希望别人能够删除、输入文字,想要实现这种设置我们可以对word文件设置限制编辑。 点击word文件工具栏中的审阅 – 限制编辑,勾选上【限制对选定的样式设置格式】 然后在弹出的提示框中,输入我…

LDRA Testbed(TBrun)软件单元测试_常见问题及处理

系列文章目录 LDRA Testbed软件静态分析_操作指南 LDRA Testbed软件静态分析_自动提取静态分析数据生成文档 LDRA Testbed软件静态分析_Jenkins持续集成(自动静态分析并用邮件自动发送分析结果) LDRA Testbed软件静态分析_软件质量度量 LDRA Testbed软件…

太爱这5本书了,建议所有大模型人去翻烂它❗

要说现在最热门的技术,可谓非大模型莫属! 不少小伙伴都想要学习大模型技术,转战AI领域,以适应未来的大趋势,寻求更有前景的发展~~ 然而,在学习大模型技术这条道路上,却不知道如何进行系统的学…

DQL学习

一、基础查询 1.查询多个字段 select 字段列表 from 表名; select * from 表名;-- 查询所有数据 但不建议使用!!!! 2.去除重复记录 select DISTINCT 字段列表 from 表名; 3.起别名 as;as也可以省略但中间要加空…

关于宝塔PHP getenv无法获取环境变量问题解决办法

今天有用ThinkPHP8接入阿里云OSS时,需要用的用到getenv()来读取环境变量,因为新版OSS SDK是用环境变更来设置AK的。 现象 正常执行PHP文件,可以取到环境变量;但是通过nginxphp-fpm调用脚本取到不到环境变量 原因 php-fpm为了防止…

车辆检测系统源码分享

车辆检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

算法4-----综合训练(4)

一:单词搜索 题目: 给定一个m*n的二位字符网格和一个字符串单词。如果单词存在于网格中,返回true,不然,返回false。 注意:单词必须按照字母顺序,通过相邻的单元格内的字母构成,同…

停车场管理系统的设计与实现

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统停车场管理系统信息管理难度大,容错率低&…

使用豆包Marscode 创建了一个”天气预报“小应用

以下是「豆包MarsCode 体验官」优秀文章,作者一拳干爆显示器。 前言 本文介绍了我第一次使用我在MarsCode IDE制作了一款天气预报的应用 其中在正文的头部以及结语部分发表了我在MarsCode编程中的体验情况,而正文的中间主要是我项目制作的细节步骤 豆…

SPWM正弦波控制

目录 前言一、PWM简介二、SPWM基本原理2.1 SPWM简介2.2 SPWM控制方法2.2.1 直接计算法2.2.2 自然采样法2.2.3 谐波法 2.3 SPWM的注意点2.3.1 死区效应2.3.2 过调制2.3.3 转矩与转速控制 三、SPWM实现四、补充 前言 本文主要介绍SPWM原理及C语言单片机的实现 一、PWM简介 PWM是P…

Vue 响应式监听 Watch 最佳实践

一. 前言 上一篇文章我们学习了 watch 的基础知识,了解了它的基本使用方法及注意事项,本篇文章我们继续了解在Vue 中 响应式监听 watch 的妙用。了解 watch 的基础使用请参考上一篇文章: 详解 Vue 中 Watch 的使用方法及注意事项https://bl…

ARM单片机的中断详细过程(重要)

ARM单片机的中断详细过程(重要) 一、ARM异常中断 ARM的异常(中断源)总共分为三类(八种): 三类: (1)执行指令引起的直接异常:软件中断&#xff…

0920作业+思维导图

一、 写一个shell脚本,将以下内容放到脚本中: 在家目录下创建目录文件,dirdir下创建dir1和dir2把当前目录下的所有文件拷贝到dir1中,把当前目录下的所有脚本文件拷贝到dir2中把dir2打包并压缩为dir2.tar.xz再把dir2.tar.xz移动到…