首页 > 其他分享 >mock介绍及moco框架搭建使用

mock介绍及moco框架搭建使用

时间:2022-09-21 18:25:11浏览次数:75  
标签:github 接口 mock 测试 moco Mock 搭建

https://cloud.tencent.com/developer/article/1759972?from=article.detail.1465591

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,访问页面如下:

 

标签:github,接口,mock,测试,moco,Mock,搭建
From: https://www.cnblogs.com/ceshi2016/p/16716620.html

相关文章

  • 走进Java接口测试之简单快速的Mock Server Moco
    https://cloud.tencent.com/developer/article/1465591引言在上文走进Java接口测试之Mock(概念篇)中,我们介绍Mock的基本概念,本文我们将详细介绍其中一个快速简单MockSer......
  • MockServer工具-Moco
    https://cloud.tencent.com/developer/article/1737211?from=article.detail.1465591前言前段时间介绍了Mock基本知识以及市面上常见的Mock工具(Mock工具介绍),今天重点介绍......
  • 基于Nonebot2搭建QQ机器人(一)环境配置
    目录Nonebot2搭建流程一、概述1、引言2、框架简介二、go-cqhttp配置三、Nonebot安装1、搭建脚手架2、使用方式3、环境配置4、修改配置文件Nonebot2搭建流程一......
  • 私服仓库的搭建
    通过linux安装docker安装maven私服1、dockerrun-d-p8081:8081--namenexus-v/root/nexus-data:/var/nexus-data--restart=alwayssonatype/nexus32、curl12......
  • Redis集群搭建
    Redis集群本章是基于CentOS7下的Redis集群教程,包括:单机安装RedisRedis主从Redis分片集群 1.单机安装RedisLinux版安装首先需要安装Redis所需要的依赖:yu......
  • 在vue中获取mock中接口文件的某个接口方法 (vue-element-admin)
    一、通过require.context来获取api/course文件夹里面的文件require.context(`@/api/course`,true,/\.js$/)得到如下:二、把以上内容处理,放入一个对象M中letM=......
  • Dubbo的环境搭建
    Dubbo的环境搭建最近在复盘之前做过的项目,想重新整理一下各类技术点,那就先从这个印象最为深刻的Dubbo开始吧什么是DubboDubbo是一款开源的RPC架构,它主要有以下功能......
  • 使用containerlab搭建cilium BGP环境解析
    使用Containerlab+Kind快速部署CiliumBGP环境一文中使用Containerlab和Cilium实现了模拟环境下的CiliumBGP网络。它使用Containerlab模拟外部BGP路由器,使用Cilium......
  • elasticsearch集群搭建
    1、配置java环境2、配置内核参数vim/etc/security/limits.conf*softnofile65536*hardnofile65536*softnproc2048*hardnproc2048*softmemlockunlimi......
  • 使用qiankun搭建微服务 (通信部分)2
    本章介绍一下qiankun的主和子应用之间的通信,原理其实是发布订阅模式,类似vue的eventbus,首先主和子应用里面都要有一个初始化的action,如下:import{initGlobalState}from......