在进行接口测试过程中,Moco可以通过简单的配置request和response 对象,达到模拟后端返回的效果
- 支持HTTP、HTTPS、socket协议;
- 支持在request中设置Headers、cookies、statusCode;
- 支持get、post、put、delete请求;
- 无需环境配置,只需要java运行环境即可;
1、下载安装
moco jar包下载地址:https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/1.1.0/
2、moco使用
1)新建文件夹,将下载好的 moco-runner-1.1.0-standalone.jar 文件放入文件夹中去,新建user.json文件,用于配置请求和响应内容
{
"request":{
"method":"post",
"uri":"/jiekou",
"headers":{"Content-type":"application/json"},
"json":{"id":"12306","name":"moco"}
},
"response":{
"status":"200",
"text":"ceshi"
}
}
2)
{
"request":{
"headers":{"Content-Type":"application/json;charset=UTF-8"}, // 请求 headers
"method":"post",
"uri":"/jiekou2",
"json": {
"type": "1",
"data": {
"citeCaseId": "11111111",
"party": [
{
"partyId": "001",
"name": "张三",
"agent": [
{
"agentId": "002"
},
{
"agentId": "002"
}
]
}
]
}
}
},
"response":{
"status":"200",
"headers": {
"Content-Type":"application/json;charset=UTF-8" // 响应的 headers
},
"json":{"code":101,"message":"必要参数缺失。"}
}
}
3)
{
"request":
{
"headers":{"Content-Type":"application/json"},
"method":"get",
"uri":"/getList",
"queries":{"sasj":"20100101"} // 带参数的GET请求,如 localhost:8880/getList?sasj=20100101
},
"response":
{
"file":"build.xml"
// 请求返回文件(可以返回xml中的内容,将xml文件放在与jar包同级目录下即可, "file":"files/build.xml",user.json所在目录下的二级目录files)
}
}
注意
若要同时模拟多个接口,可以用[ ]括起来,并用,分割,也就是json的格式。
3、启动mock
cmd 进入moco-runner-1.1.0-standalone.jar 所在文件夹,执行下面命令
java -jar moco-runner-1.1.0-standalone.jar http -p 8881 -c user.json
运行成功。直接使用postman或者其他接口调用工具调用接口即可。
4、分模块
使一个项目会分好几个模块,如登录注册等员工模块、聊天模块、博文模块等,会有很多很多请求,如果我们把不同业务的mock数据都写在一个文件里面,那就太难看了,为此,我们需要做一些改变来解决这个问题
下面以TodoList.json为例
// 在根目录下新建 TodoList.json 文件,内容如下
[
{ "context": "/user", "include": "user.json" },
{ "context": "/newUser", "include": "data.json"}
]
这样,当我们访问
http://localhost:8880/user/userInfo 和 http://localhost:8880/newUser/newUserInfo 时候
会跳到后面对应的 json 再处理一遍
// user.json
[{"request":{"uri":"/userInfo"},"response":{"json":{"username": "Sampson"}}}]
// newUser.json
[{"request":{"uri":"/newUserInfo"},"response":{"json":{"username": "NewSampson"}}}]
Moco支持在全局的配置文件中引入其他配置文件,这样就可以分服务定义配置文件,便于管理。
配置好文件,在全局文件中引入即可:
全局配置如下:
java -jar moco-runner-1.1.0-standalone.jar start -p 8880 -g TodoList.json
注意,此时需要通过参数 -g
在加载全局配置文件。,使用的不是 -c
了
原文:https://blog.csdn.net/vite_s/article/details/54583243
5、Mock测试存在的问题
使用Mock测试有时可以提高团队的开发效率,但当B、C都开发完成代码后,这时应该把E2E测试代码从使用Mock测试改为调用真实的模块,以避免出现模块之间集成部分漏测的问题。这里说mock存在的问题,主要是让开发和测试不要过分的依赖/相信mock接口。
使用mock时,切记的几点:
1)测试人员不应该被覆盖率高的E2E自动化测试所迷惑,覆盖率高不代表没有问题。尤其在接手新项目中,需要查看E2E测试中有没有使用Mock测试,进一步去判断这些地方使用Mock测试是否合理,这些Mock测试是否应该换成真实模块间的调用和集成。
2)当把mock接口换成实际接口后,测试/开发也必须把之前的测试重新做一遍。
ps: 当你使用mock接口来提高效率,请注意:你的工作量其实是比 直接只用实际接口 多了 一倍的。如果测试时,偷懒,替换成实际接口后,只是简单测试,那么 当实际接口和mock预期接口有差异时,故障便和你相遇了。
建议: mock接口只能主流程联调/ 异常返回测试,不要过分依赖mock接口进行测试。
3)测试完毕,上线前,请一定确保 为了mock而做的相关代码/配置文件的修改,已经完全恢复了
更多用法可查看本段原文:https://blog.csdn.net/qq_35716699/article/details/90581880