mock虚拟接口技术

news2024/11/18 11:27:07

一、什么是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.coloradmin.cn/o/2162314.html

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

相关文章

2024年华为杯研究生数学建模竞赛D题(时空演化模型+脆性指数 完整文章|可视化)

2024年华为杯研究生数学建模竞赛D题 全文请从 底部名片 处加群获取哦~ 问题重述 题目背景: 地理系统是由自然和人文多要素综合作用形成的复杂巨系统。传统上,地理学家通过宏观结构和定性分析方法描述地理系统的主导特征,如地形分布、气候…

两个月学习大语言模型(LLM)的详细计划,保姆级教程非常详细收藏我这一篇就够了!

随着人工智能技术的发展,大语言模型(Large Language Models, LLMs)因其在自然语言处理、机器翻译、文本生成等领域的广泛应用而受到越来越多的关注。对于希望掌握这一前沿技术的朋友来说,制定一个系统的学习计划至关重要。本计划旨…

笔试强训,约瑟夫环plus孩子们的游戏​编辑解法二.动态规划大数加法牛客.在字符串中找出连续的最长数字串力扣703.数据流中第K大元素​编辑

目录 约瑟夫环plus 孩子们的游戏​编辑 解法二.动态规划 大数加法 牛客.在字符串中找出连续的最长数字串 力扣703.数据流中第K大元素​编辑 约瑟夫环plus 孩子们的游戏 基本模拟,没啥特殊技巧 import java.util.*;public class Solution {/*** 代码中的类名、…

03-Docker下载加速

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

企业微信VS钉钉:高效办公工具推荐!

这两者各有千秋,适合不同的办公场景。企业微信的优势在于与微信的紧密集成,便于与客户沟通,适合需要频繁与外部联系的企业。它提供了基本的办公自动化功能,如团队协作、审批、日程等。 钉钉则在企业管理和团队协作方面功能更全面…

ATX电源插头的接口定义

主板20Pin接口定义 主板24Pin接口定义 CPU4Pin接口定义 4D口定义 显卡6Pin接口定义(6Pin PCI Express接口) 显卡62Pin接口定义(8Pin PCI Express接口) PCI-E供电接口 主要提供12V供电,其中PCI-E 6Pin供电有2组12V供电,而PCI-E 62Pin则有3组12V供电&#…

多线程:死锁

目录 死锁的条件 死锁的示例 死锁的预防与解决 死锁的检测 总结 死锁(Deadlock)是多线程或多进程环境中一种特定的状态,指的是两个或多个线程或进程在执行过程中,由于争夺资源而造成的一种相互等待的状态,导致它们…

微服务——配置管理

1.配置管理 微服务配置管理是指对微服务架构中各个服务的配置信息进行管理、更新、查询和审计等操作,以确保系统的正常运行和高效管理。例如,网关路由或某些业务配置在配置文件中写死了,每次修改都要重启服务。每个微服务都有很多重复的配置&…

6 门新兴语言,小众亦强大

​编码语言在塑造我们创建软件的方式方面起着至关重要的作用。多年来,我们观察到 Python,Java 和 C等成熟语言的流行。然而,如今一波新的编码语言浪潮已经出现,提出了创造性的解决方案,并推动了软件工程领域所能完成的…

【更新】全国地级市胡焕庸线、长江经济带、地域划分数据

本次数据是地级市的胡焕庸线、长江经济带、地域划分数据: 1、胡焕庸线是一条经典的地理分割线,它区分了中国人口分布的稠密区与稀疏区,东南部地区人口密集,西北部地区则较为稀疏 2、长江经济带是指沿长江流域分布的经济区域&…

聚焦Llama新场景和AR眼镜,扎克伯格用AI赋能元宇宙,Meta Connect 2024开发者大会即将开始

北京时间 9 月 26 日凌晨 1 点(美国时间 9 月 25 日上午 10 点),Meta Connect 2024 年度开发者大会即将举行。 届时,Meta 首席执行官马克扎克伯格将聚焦 AI 和元宇宙,向大家分享 Meta 最新的产品和服务。HyperAI超神经…

微信小程序转化为uni-app项目

前言: 之前自己做一个uni-app的项目的时候前端需要实现一个比较复杂的动态tab和swiper切换的功能,但是由于自己前端抠脚的原因没有写出来,然后自己在网上搜索的时候发现了有个微信小程序里面的页面及极其的符合我的需求。那么问题来了我该如何…

《ESP32调试异常集锦》之:程序编译失败,提示undefined reference to `dedic_gpio_bundle_write‘

项目场景: 硬件:ESP32-LyraT-Mini V1.2开发板,使用的是ESP32-WROVER-E 模组。 程序:基于soft_i2c示例程序修改协议内容实现与TM1640通信测试 问题描述 编译失败,"full clean"后重新编译依旧失败。没有语法…

无法将“allure”项识别为 cmdlet、函数、脚本文件或可运行程序的名称的解决方法-allure的安装配置全过程

新手在使用allure之前,以为只是pip install allure-pytest就可以,no!!! 其实,还需要下载allure,allure的具体步骤如下: 1.下载 allure。 allure的下载地址:Central Re…

解决你的IDE在使用的时候测试单元@Test在创建Scanner对象是键盘键入不了的问题;

插播一条快讯,我在我的ide中新创建 了project后发现我的测试单元不好使了,即 import org.junit.Test; 这个包在创建Scanner对象接受键盘时,控制台输入时没有任何反应,键入不了了,我的问题出现原因可能是我导入了JDBC…

基于SpringBoot+Vue的校园快递代取管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏:Java精选实战项目…

Maven配置及使用

1. Maven简介和安装 1.1. Maven是一个依赖管理工具 问题: jar包的规模 随着使用框架越来越多,或框架的封装程度越来越高,项目中使用的jar包也越来越多。项目中,一个模块里用到上百个jar包是非常正常的jar包的来源 jar包所属技术…

力扣算法题总结

lc253 题目:求最多重叠(x,y)的数量 思路:按y排序,把y放入优先队列,逐个比较x,x大于优先队列的堆顶元素就弹出堆顶。 lc148 题目:对链表排序 思路:归并排序。快慢指针找到链表中点&#xff0c…

计算机网络详解:发展史、TCP/IP协议、网络通信与应用开发全流程

文章目录 1. 计算机网络的发展史1.1 初期阶段:网络的萌芽(1960年代)1.2 第二阶段:TCP/IP协议的引入(1970-1980年代)1.3 第三阶段:互联网的普及与商业化(1990年代)1.4 现代…