网站首页 > 技术文章 正文
简介
Mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的比较复杂的对象,用一个模拟的对象来创建以便测试的测试方法。
而Mock接口,就是做一个临时用的假接口。
应用场景
mock测试场景主要是以下这些:
- 测试接口中需要依赖第三方接口返回值进行逻辑处理,例如银行的支付接口;
- 模拟异常数据返回,例如需要返回特殊字符、不同长度、类型格式等内容;
- 前后端开发并行工作调试,后端接口未完成时,前端调用Mock数据进行调试;
- 隔离环境,保证数据安全和正确性,对于POST、PUT、DELETE等请求进行隔离,防止修改数据出现其他未知错误。
我作为一个测试工程师,学习mock主要是因为工作中有需要使用。使用场景大概描述就是这样,一个后端项目,使用敏捷开发,我主要是做接口测试,需要做接口自动化。
架构要求每个迭代周期在开发交付接口前,前端和测试都对mock接口做调试和验证,在开发交付接口前测试需要交付有效的测试脚本,每次更新代码打包部署后都跑测试脚本。开发完成一个接口就用真接口替换一个mock接口。这样就能做到实时验证,及时修改问题。
而前端和后端都没精力做mock接口,就只有测试自己接这部分工作了。
如果你想往接口自动化这方面发展一下,我个人建议学习一下mock还是挺有帮助的。
Mock常用的几种方式
Mock的方法很多,这里罗列几种比较常用的:
- fiddler/Charles工具
- Mock Server-Moco
- 网上Mock平台
后面就介绍一下Mock Server-Moco这种方式。
Mock Server-Moco说明
Moco是一个简单搭建模拟服务器的框架(工具),可以模拟http、https、socket等协议。它是基于Java开发的开源项目,Github地址:https://github.com/dreamhead/moco。
Moco的实现原理比较简单,它会根据一些配置,启动一个真正的HTTP服务(会监听本地的某个端口)。当发起的请求满足某个条件时,就会返回指定的响应数据。
这里要注意,满足的条件和响应的数据,这两者的限制其实挺大的,这也就是mock仅仅是mock,无法取代真正的接口的原因。
Mock Server-Moco环境搭建
首先要在本地配置jdk环境,最好是jdk1.8或者更高的版本。jdk环境就不在这里展开了,网上帖子很多。
然后要下载一个jar包,地址:https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner
现在最新的版本是1.3.0,具体可以看当时的最新版本。
Mock Server-Moco启动命令
启动比较简单,直接在dos窗口输入命令就行,命令如下:
java -jar <path-to-moco-runner> http -p <monitor-port> -c <configuration-file>
java -jar <path-to-moco-runner> http -p <monitor-port> -g <configuration-file>
- path-to-moco-runner:jar包的路径
- monitor-port:http服务监听的端口
- configuration-file:配置文件路径
两种启动方式主要是-c和-g后面跟的文件有点区别,后面会具体介绍。
Mock Server-Moco请求
创建一个json文件,名为musicName.json,内容如下:
[
{
"description": "获取歌曲名",
"request": {
"uri": "/current"
},
"response": {
"text":"Canon"
}
}
]
启动mock服务:
调用结果:
在创建一个json文件,配置一个put类型得接口,文件名为startPlay.json,内容如下:
[
{
"description": "开始播放",
"request": {
"uri": "/playMusic",
"method": "put",
"headers": {
"Content-Type": "application/json"
},
"json": {
"state": 1}
},
"response": {
"headers": {
"Content-Type": "application/json;charset=UTF-8"
},
"json":{
"error": 0,
"state": 1
}
}
}
]
启动mock服务:
调用接口:
如果你不想一个一个接口启动,想一次性将所有接口都启动,可以配置一个这样的config.json文件:
[
{"include": "musicName.json"},
{"include": "startPlay.json"}
]
然后通过这样的命令启动:
这个时候config.json里的接口都能够正常调用到。
总结
mock服务可以配置的接口类型和参数非常丰富,但是没有数据处理的能力。用的好,在敏捷开发中可以起到非常大的帮助。
猜你喜欢
- 2024-10-06 想要mock你的网络请求?还不快来学习Charles
- 2024-10-06 测试工具链—— AnyProxy搭建HTTP(S)代理服务器构建Mock服务(一)
- 2024-10-06 Mock工具wiremock-py mock工具类静态方法返回值
- 2024-10-06 当 Swagger 遇上 Torna,瞬间高大上了
- 2024-10-06 Mockjs POST和GET不同参数返回不同结果的实现方法
- 2024-10-06 mock介绍及moco框架搭建使用 mockoa
- 2024-10-06 对于依赖第三方的接口如何进行测试?
- 2024-10-06 本地部署easy-mock 本地部署sd的最低配置要求
- 2024-10-06 利用 apipost 生成mock数据 怎么生成api接口
- 2024-10-06 Mock工具之Moco使用教程 mock新手教程
你 发表评论:
欢迎- 501℃几个Oracle空值处理函数 oracle处理null值的函数
- 497℃Oracle分析函数之Lag和Lead()使用
- 495℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 482℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 478℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 468℃【数据统计分析】详解Oracle分组函数之CUBE
- 454℃Oracle有哪些常见的函数? oracle中常用的函数
- 450℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 最近发表
-
- Directus 火了!无代码 SQL 数据的协作应用利器!
- PHP和NodeJS的代码执行效率比较(php和nodejs的区别)
- 工商银行获得发明专利授权:“基于数据库映射动态接口的前端页面应用开发方法及装置”
- FAISS和Chroma:两种流行的向量数据库的比较
- 什么是数据库的索引?(数据库索引的定义和作用)
- Vercel和Neon“首次”推出用于前端云的无服务器SQL数据库
- 记一次前端逻辑绕过登录到内网挖掘
- 学Access好还是MySQL好?(access与mysql的语句区别)
- 惬意!清晨慢品 HTML canvas 标签题,面试知识轻松 get
- 前端实现知识图谱-force(d3.js)(前端知识树)
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端富文本编辑器 (47)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)