网站首页 > 技术文章 正文
点击上方头像关注我,每周上午 09:00准时推送,每月不定期赠送技术书籍,小窗口回复“资源”、“测试工具包”领取测试资源。
本文3237字,阅读约需9分钟
一
Mock介绍
1
什么是mock
mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。 在具体的测试过程中,我们经常会碰到需要模拟数据或者接口的情况,因为环境问题或者系统复杂度的问题,我们需要使用 Mock 方式进行数据的模拟。
2
mock应用场景
- 对象信息难构建:在测试过程中,需要第三方接口返回特定的数据以符合特定的测试场景,这种情况往往需要跨条线的沟通协调测试数据,成本高,效率低;利用Mock可以自定义返回测试结果,支持手动构造依赖接口的返回值。
- 依赖的接口尚未开发完成:依赖接口性能参数无法保障。在对接口性能压测的时候,需要下游接口及时返回数据,满足上游接口的调用 频度。在依赖接口多的情况下,如何减轻工作量?
- 异常场景(连接异常、超时异常等):当需要测试接口一些异常数据,接口正常情况是否无法提供异常数据的。那么如何简便地构造接口的异常数据?
3
mock优缺点分析
优点:
- 团队可以并行工作:有了Mock,前后端人员只需要定义好接口文档就可以开始并行工作,互不影响,这样的话,开发自测阶段就可以及早开展,从而发现缺陷的时机也提前了,有利于整个产品质量以及进度的保证。
- 隔离系统:由于其他系统模块出错引起本模块的测试错误,我们可以采用mock隔离,避免干预
- 测试覆盖度:异常条件很复杂或者无法模拟,使用mock,这一切就都好办了,想要什么返回就模拟什么返回,提高测试覆盖度。
缺点:覆盖率高不代表没有问题,测试过程中如果大量使用Mock,mock测试的场景失去了真实性,可能会导致在后续的系统性测试时才发现bug,使得缺陷发现的较晚,可能会造成后续修复成本更大。
建议:mock接口只能主流程联调/ 异常返回测试,不要过分依赖mock接口进行测试。
4
接口mock工具介绍
01 Mockserver
github地址:https://github.com/jamesdbloom/mockserver
特点:
- 能够mock HTTP或者HTTPS 的server;
- 当一个请求匹配 expectation时能够返回一个mock response;
- 当一个请求匹配 expectation时能够forward 一个请求;
- 当一个请求匹配 expectation时能够执行一个回调(callback),允许动态地创 建response;
- 支持Request验证。
02 RAP
github地址:https://github.com/thx/RAP
RAP是阿里团队出的一款接口管理工具,帮助开发人员有效的管理接口文档。包括阿里集团在内的三百五十多个企业都在使用RAP管理重要的接口文档。
- Web接口管理工具,接口自动化,MOCK数据自动生成,自动化测试;
- 能够通过分析接口结构自动生成Mock数据、校验真实接口的正确性;
- 阿里产品,功能完善、结合了文档、Mock.js、可视化、Rest、接口过渡、文档修改提醒、支持本地部署。
03 Yapi
github地址:https://github.com/YMFE/yapi
YApi是去哪儿网移动架构组开发的一个开源项目,YApi的 Mock 功能可以根据用户的输入接口信息如协议、URL、接口名、请求头、请求参数、返回数据、生成 Mock 接口,这些接口会自动生成模拟数据,创建者可以自由构造需要的数据。mock模拟数据基于mock.js。
Mock.js 是一款模拟数据生成器,旨在帮助前端独立于后端进行开发,帮助编写单元测试。提供了以下模拟功能:
- 根据数据模板生成模拟数据;
- 模拟 Ajax 请求,生成并返回模拟数据;
- 基于 HTML 模板生成模拟数据。
04 Moco
github地址:https://github.com/dreamhead/moco
Moco 是一个简单搭建 stub 的框架,主要用于测试和集成。Moco本身支持API和独立运行两种方式。通过使用API,开发人员可以在JUnit、JBehave等测试测试框架里使用Moco,极大程度地降低了集成点测试的复杂度
Moco可以提供以下服务:
- 支持http、https、socket;
- 支持设置headers、cookies、statuscode;
- 支持GET、POST、PUT、DELETE请求;
- 只需JRE环境即可运行;
- 支持热更新;
- 支持json、xml、text、file数据格式;
- 能与JUnit、Maven、Gradle集成。
05 Mock.js
github地址:https://github.com/nuysoft/Mock/tree/refactoring
特点:
- 根据数据模板生成整合后的数据;
- 对于Ajax请求提供request/response mocking。
本次主要介绍moco框架的使用。
二
moco框架介绍及运行
环境说明:
需先安装JDK并配置环境变量。
1
moco下载
moco下载地址:
https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/1.1.0/
如下所示:
2
mock目录结构
C:\moco-runner\
├─moco-runner-1.1.0-standalone.jar
└─moco.json
在本地新建moco-runner文件夹,将下载好的moco-runner-1.1.0-standalone.jar放入文件夹,然后新建moco.json配置文件。
moco.json内容如下:
[
{
"description": "这是我们的运行demo",
"request": {
"uri": "/demo"
},
"response": {
"text": "第一个moco框架demo"
}
}
]
字段说明:
- description:程序不会识别,是写给我们自己看的;
- request:请求,里面的 uri 是我们访问应用的时候拼接在端口后面的路径;
- response:响应内容;
3
moco启动服务
启动命令:
java -jar ./moco-runner-1.1.0-standalone.jar 协议类型 -p 端口号 -c json配置文件
①打开cmd命令行,切换到moco-runner目录。
cd C:\moco-runner
②输入命令,启动服务:
java -jar ./moco-runner-1.1.0-standalone.jar http -p 8899 -c moco.json
启动成功后,效果如下:
③打开浏览器,输入:http://localhost:8899/demo,访问页面如下:
下一篇:moco框架详解及使用。
更多系列文章
敬请期待
想获取更多最新干货内容
快来星标 置顶 关注我
- 上一篇: 对于依赖第三方的接口如何进行测试?
- 下一篇: 当 Swagger 遇上 Torna,瞬间高大上了
猜你喜欢
- 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 对于依赖第三方的接口如何进行测试?
- 2024-10-06 本地部署easy-mock 本地部署sd的最低配置要求
- 2024-10-06 利用 apipost 生成mock数据 怎么生成api接口
- 2024-10-06 Mock工具之Moco使用教程 mock新手教程
- 2024-10-06 最全面!一文让你看懂无侵入的微服务探针原理
你 发表评论:
欢迎- 501℃几个Oracle空值处理函数 oracle处理null值的函数
- 495℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 494℃Oracle分析函数之Lag和Lead()使用
- 482℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 474℃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)
本文暂时没有评论,来添加一个吧(●'◡'●)