前言
由于在工作中经常调用到第三方的接口,然而做性能测试时,公司不给调用第三方接口进行性能测试,所以此处用到了MOCK工具,来解决性能测试中遇到的问题。
一、Mock是什么?
Mock是一个工具,主要是用于模拟一个mock服务,部署至服务器,用于满足前端开发和测试人员在工作中的需求。
二、使用步骤
1.github地址
https://github.com/dreamhead/moco
2.data.json模板使用
返回json响应信息,get请求
[
{
"request":{
"uri":"/getContract",
"method":"get"
},
"response":{
"status":200,
"headers":{
"Content-Type":"application/json;charset=utf-8"
},
"json":{
"code":200,
"data":{
"signers":[
{
"docList":[
{
"docName":"已签章文档",
"docStatus":1,
"docId":1294460089968697345
}
],
"signStatus":3,
"userId":1050
}
],
"code":"133",
"documents":[
{
"docName":"已签章文档",
"docId":1294460089968697345
}
],
"contractId":1294460089951920129,
"contractName":"交易合同sxj",
"enterpriseId":1051,
"status":3
},
"msg":"请求成功",
"ok":true
}
}
},
{
"request":{
"uri":"/getCode",
"method":"get"
},
"response":{
"status":200,
"headers":{
"Content-Type":"application/json;charset=utf-8"
},
"json":{
"name":"张三"
}
}
}
]
POST请求以及模板使用
"template": "${req.version}"
"template": "${req.method}"
"template": "${req.content}"
"template": "${req.headers['foo']}"
"template": "${req.queries['foo']}"
"template": "${req.forms['foo']}"
"template": "${req.cookies['foo']}"
{
"request":{
"method":"post",
"uri":"/getUser"
},
"response":{
"headers":{
"Content-Type":"application/json;charset=utf-8"
},
"json":{
"msg":"查询成功",
"text":{
"template":"${req.queries['name']}"
}
}
}
}
重定向data模板
[
{
"request":{
"uri":"/redirect"
},
"redirectTo":"http://www.baidu.com"
}
]
设置网络延时请求
[
{
"request":{
"uri":"/mobile"
},
"response":{
"latency":{
"duration":1,
"unit":"second"
},
"headers":{
"Content-Type":"application/json;charset=utf-8"
},
"json":{
"name":"张三"
}
}
}
]
网络请求参数是json形式
[
{
"request":{
"uri":"/test/webservice/dispatchPwd/getHostPassword",
"json":{
"token":"123456",
"ipAddr":"192.168.19.110",
"account":"hello1"
},
"method":"post"
},
"response":{
"json":{
"code":"200",
"data":"1017B897C5CF7A90BE7CB5DE8A1D0A26:56F7A1F60D5D8E93BAC74454D0A55FE0"
}
}
}
]
分模块
通过include引入其他文件,比如有多个接口,写到一个文件data.json.文件太乱了,所以使用TodoList进行分模块处理
[ { "context": "/user", "include": "user.json" }, { "context": "/todo", "include": "todo.json" } ]
这样,当我们访问
http://localhost:12306/user/create 和 http://localhost:12306/todo/getAll时候,
会跳到后面对应的json再处理一遍
[ { "request" : { "uri" : "/create" }, "response" : { "text" : "这是创建用户请求" } } ]
//todo
[ { "request" : { "uri" : "/getAll" }, "response" : { "text" : "这是获取用户所有Todo的请求" } } ]
全局引入:
java -jar moco-runner-standalone.jar start -p 5638 -g data.json
注意:将-c 替换成-g
总结
以上就是我最近学习,并经常会用到的功能配置,如果有更好的建议,欢迎与我交流,谢谢!