您的位置:首页 > 游戏 > 手游 > 使用moco 完成挡板测试

使用moco 完成挡板测试

2024/10/6 6:00:14 来源:https://blog.csdn.net/Qzibidog/article/details/140541349  浏览:    关键词:使用moco 完成挡板测试

这里写自定义目录标题

  • 背景
  • 使用 moco 工具完成mock挡板功能
    • 1. 下载jar包
    • 2. 简单启动
      • 2.1 准备一个简单的json文件
      • 2.2 启动
    • 高级运用
      • 同一接口的不同返回
      • 字段部分匹配 SONPath
      • 参数结构匹配 SON Struct JSON
      • 分模块

背景

mock测试(挡板测试)就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。
比如:测试天气这个接口,最近上海都没有下雪,那么我怎么去模拟下雪这个场景?需要等到真正下雪的哪天才可以吗?这个时候就可以通过mock来帮助我们完成下雪的场景了

  1. 后端代码还未开发完,前端代码需要调用后端接口进行调试,怎么办?
  2. 无法控制第三方系统某个接口的返回,返回的数据不满足要求?
  3. 需要跟第三方联调但对方还未开发完成,如何提早测试?
  4. 不用等开发人员开发完接口再进行自动化测试case的编写,在这个过程中可以修改、补case,在后端开发接口完成以后,只需要执行测试case,省去了很大的工作量,并且这些完善的用例脚本,用自动化去执行,效果更好。

使用 moco 工具完成mock挡板功能

1. 下载jar包

jar包下载地址 https://github.com/dreamhead/moco/releases

在这里插入图片描述

2. 简单启动

2.1 准备一个简单的json文件

test.json

[{"request": {"method": "post", "uri": "/test", "headers": {"Content-type": "application/json"}, "json": {"id": "12306", "name": "moco"}}, "response": {"status": "200", "text": "hello moco!"}}
]

2.2 启动

java -jar moco-runner-1.5.0-standalone.jar start -p 9192 -c test.json

-p 9192 是端口 ; -c test.json 是指的配置文件

然后直接,使用postman直接访问就可以了。
在这里插入图片描述

注意防火墙端口开放问题

高级运用

作者这里只会列举出个人比较常用的功能,如果无法满足你的需要,建议阅读其官方文档,或许能帮你找到答案。
moco 官方文档

同一接口的不同返回

只需要,在配置文件里再加一个接口,并配上不同参数。都满足,默认匹配第一个。

[{"request": {"uri": "/shop","struct": {"json": {"id": "12305"}}},"response": {"status":200,"headers" :{"content-type" : "application/json"},"json": {"hits": [],"msg": "hello,12305"}}},{"request": {"uri": "/shop","struct": {"json": {"id": "12306"}}},"response": {"status":200,"headers" :{"content-type" : "application/json"},"json": {"hits": [],"msg": "hello,12306"}}}
]

在这里插入图片描述

字段部分匹配 SONPath

有时候我们需要模拟一些异常情况时,如果我们
每个字段都需要匹配,未免有些麻烦。但其实如果我们只需要其中部分字段,就能够满足用例,那么这个 json 路径匹配就会非常实用了。
配置文件

{"request":{"uri":"test","json_paths":{"$.book[*].price": "1"}},"response":{"text": "response for price 1 "}
}

$ 代表顶层根节点
book[*].price :1 代表任意book数组元素满足值为1

启动,测试结果。
在这里插入图片描述

参数结构匹配 SON Struct JSON

仅为相同的结构匹配JSON请求,而不管实际内容是什么。

{"request":{"struct":{"json" : {"foo" :1}}},"response":{"text": "response_for_json_struct_request"}
}

分模块

一个项目分多个模块,如果你是一个追求美观整洁的人,必然会创建多个文件代表着不同模块的功能。如何恰好你需要多个配置文件一起生效呢。

// 在根目录下新建 TodoList.json 文件,内容如下
[ { "context": "/user", "include": "user.json" }, { "context": "/test", "include": "test.json"} 
]

那么 原路径: 192.168.32.195:9192/shop
新路径:192.168.32.195:9192/test/shop

额,总有个结尾吧 ┓(;´_`)┏

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com