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

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

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

相关推荐
小码哥说测试4 分钟前
验收测试:从需求到交付的全程把控!
自动化测试·功能测试·测试工具·jmeter·单元测试·postman·验收测试
测试19984 小时前
Python+requests+pytest+allure自动化测试框架
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·pytest
小码哥说测试4 小时前
Postman如何测试WebSocket接口!
自动化测试·软件测试·websocket·selenium·测试工具·appium·postman
天天进步20154 小时前
在 Postman 中模拟 HTTPS 请求
测试工具·postman
Betray3914 小时前
Postman导出报告
测试工具·node.js·postman
梦茹^_^20 小时前
EC Shop安装指南 [ Apache PHP Mysql ]
数据库·测试工具·mysql·php·apache·httpd·ec shop
土小帽软件测试1 天前
fiddler抓包07_抓IOS手机请求
测试工具·ios·fiddler·抓包·软件测试学习
互联网杂货铺1 天前
面试干货|自动化测试中常见面试题
自动化测试·软件测试·python·测试工具·面试·职场和发展·测试用例
豆子熊.1 天前
selenium测试框架快速搭建(超详细)
软件测试·selenium·测试工具·测试用例·postman