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"
	}
]

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

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

相关推荐
niuniu_6663 小时前
Selenium 性能测试指南
selenium·测试工具·单元测试·测试·安全性测试
莓事哒3 小时前
selenium和pytessarct提取古诗文网的验证码(python爬虫)
爬虫·python·selenium·测试工具·pycharm
软件测试曦曦6 小时前
如何使用Python自动化测试工具Selenium进行网页自动化?
自动化测试·软件测试·python·功能测试·测试工具·程序人生·自动化
互联网杂货铺8 小时前
黑盒测试、白盒测试、集成测试和系统测试的区别与联系
自动化测试·软件测试·python·功能测试·测试工具·单元测试·集成测试
Feng.Lee19 小时前
聊一聊缓存如何进行测试
功能测试·测试工具·缓存
爱学测试的雨果1 天前
Postman —— postman实现参数化
软件测试·功能测试·测试工具·lua·postman
互联网杂货铺1 天前
如何用Postman实现自动化测试?
自动化测试·软件测试·python·测试工具·测试用例·接口测试·postman
niuniu_6661 天前
安全性测试(Security Testing)
测试工具·单元测试·appium·测试·安全性测试
薄荷你玩_1 天前
简单粗暴,用浏览器调试端口绕过Selenium/Playwright/Puppeteer检测
selenium·测试工具
程序员三藏1 天前
Python+Jenkins+Allure Report接口自动化测试持续集成
自动化测试·软件测试·python·测试工具·ci/cd·jenkins·测试用例