研发、测试在工作中MOCK测试工具的使用
程序员文章站
2022-07-12 18:58:14
...
前言
由于在工作中经常调用到第三方的接口,然而做性能测试时,公司不给调用第三方接口进行性能测试,所以此处用到了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
总结
以上就是我最近学习,并经常会用到的功能配置,如果有更好的建议,欢迎与我交流,谢谢!
上一篇: Ajax -- 获取XMLHttpRequest对象
下一篇: 修改集合列表指定位置元素
推荐阅读
-
使用Apache ab工具对Apache服务器进行简单的压力测试
-
使用RAP2和Mock.JS实现Web API接口的数据模拟和测试
-
使用HTTP-REPL工具测试ASP.NET Core 2.2中的WEB API项目
-
详解Idea中HTTP Client请求测试工具的使用
-
基于在生产环境中使用php性能测试工具xhprof的详解
-
使用Python开发测试小工具-录制回放工具的实现
-
简单并发测试工具Apache Benchmark的安装使用
-
【开发工具】【stream】内存带宽测试工具(Stream)的使用
-
【开发工具】【memtester】内存测试工具(memtester)的使用
-
研发、测试在工作中MOCK测试工具的使用