使用moco 完成挡板测试

news2024/9/24 19:23:10

这里写自定义目录标题

  • 背景
  • 使用 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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1950019.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在jmeter中使用javascript脚本

工作上遇到一个压力测试的需求,需要测试几个考试相关的接口。其中有一个获取试题详情的接口,和一个提交答题信息的接口。后一个接口以上一接口的返回内容为参数,添加上用户的答案即可。jmeter提供了非常多的方式可以实现该需求,这…

保障企业数据主权:安全可控的爬虫工具与管理平台

摘要 在数据驱动的时代,企业对数据的需求日益增长,但如何在保障数据主权的前提下高效采集数据?本文深入探讨了选择安全可控爬虫工具与管理平台的重要性,分析了关键特性,并提出实用建议,助力企业维护数据安…

AWT200-HPLC-M载波通讯模块/智能网关

安科瑞AWT200-HPLC-M载波通讯模块适用于对数据实时性要求不高的系统,数据刷新速度大于1分钟,比如Acrel-5000能耗管理系统 电力线载波通讯模块AWT200-HPLC-M具备载波接收和网关通讯功能,支持三相载波数据采集,协议转换和数据上传平…

【Plotly-驯化】一文教你通过plotly画出动态可视化多变量分析:create_scatterplotmatrix

【Plotly-驯化】一文教你通过plotly画出动态可视化多变量分析:create_scatterplotmatrix 本次修炼方法请往下查看 🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地! &am…

windows USB 设备驱动开发- WinUSB 简介

WinUSB 是 Windows 随附的 USB 设备的通用驱动程序。WinUSB 包括: 内核模式驱动程序 (Winusb.sys);公开 winusb.h 中所述的 WinUSB 函数的用户模式动态链接库 (Winusb.dll)。 借助这些函数,你可以使用用户模式软件管理 USB 设备;…

软件测试产教融合高质量发展论坛举办,开源网安受邀解读国家标准

近年来,在国家政策引导下,横跨教育体系内外的产教融合改革正在进行,推动了教育与产业深度融合、学校与企业协同发展。在软件安全领域,开源网安也一直走在产教融合发展的最前线,与各大高校建立了深度合作,双…

Cuppa CMS v1.0 任意文件读取漏洞(CVE-2022-25578)

前言 春秋云镜靶场是一个专注于网络安全培训和实战演练的平台,旨在通过模拟真实的网络环境和攻击场景,提升用户的网络安全防护能力和实战技能。这个平台主要提供以下功能和特点: 实战演练: 提供各种网络安全攻防演练场景&#…

mysql字符类型字段设置默认值为当前时间

-- 2024-07-22 10:22:20 select (DATE_FORMAT(CURRENT_TIMESTAMP, %Y-%m-%d %H:%i:%s)); ALTER TABLE tablename MODIFY COLUNN CREATE_DATE varchar (23) DEFAULT(DATE_FORMAT(CURRENT_TIMESTAMP, %Y-%m-%d %H:%i:%s)) COMMENT "创建日期;

新校区,新视野——广州六中以太彩光打造智慧教育新高地

广州市第六中学总务处 林继青 广州市第六中学是拥有85年办学历史的著名市重点中学,也是广东省首批一级学校和国家级示范性高中。作为广州市首批智慧校园建设示范单位,广州第六中学在从化、花都新建校区的智慧校园建设中“破旧立新”,让先进的以太全光技术与学校新校区建设同频共…

CVE-2024-39700 (CVSS 9.9):JupyterLab 模板中存在严重漏洞

在广泛使用的 JupyterLab 扩展模板中发现了一个严重漏洞,编号为CVE-2024-39700 。此漏洞可能使攻击者能够在受影响的系统上远程执行代码,从而可能导致大范围入侵和数据泄露。 该漏洞源于在扩展创建过程中选择“测试”选项时自动生成“update-integratio…

基于 HTML+ECharts 实现智慧安防数据可视化大屏(含源码)

构建智慧安防数据可视化大屏:基于 HTML 和 ECharts 的实现 随着科技的不断进步,智慧安防系统已经成为保障公共安全的重要工具。通过数据可视化,安防管理人员可以实时监控关键区域的安全状况、人员流动以及设备状态,从而提高应急响…

TikTok批量养号方法

想要在TikTok平台上批量养号,确保账号的健康与活跃度非常重要,不然等于白干。下面,我们就来详细探讨一下TikTok养号的几个关键步骤。 首先,新注册的账号必须严格遵守一机一号一IP的原则。随着TikTok平台在识别IP技术方面的不断进步…

叶再豪老师-降龙精英课程

文章目录 1.思维认知1.1 稻盛和夫成功公式1.2 龙头主升模式1.3 龙头主升-两种路径1.4 股市新手的炒股思路1.5 龙头案例1.6 降龙心法 2.情绪周期2.1 情绪周期2.1 情绪演绎周期2.2 情绪的四个部分2.2.1 指数的情绪周期2.2.3 热点情绪周期2.2.4 热点情绪演绎周期2.2.5 大热点支线2…

CDGA|数据治理:安全如何贯穿数据供给、流通、使用全过程

随着信息技术的飞速发展,数据已经成为企业运营、社会管理和经济发展的核心要素。然而,数据在带来巨大价值的同时,也伴随着诸多安全风险。因此,数据治理的重要性日益凸显,它不仅仅是对数据的简单管理,更是确…

JAVA基础知识4(static、继承)

JAVA基础知识4 static静态成员变量静态成员方法解释注意点 继承父类(基类或超类)子类(派生类)使用继承的示例解释运行结果 成员变量的访问特点成员方法的访问特点构造方法的访问特点 Java项目,包和类之间的联系包的概念…

【Linux】玩转操作系统,深入刨析进程状态与调度机制

目录 1. 进程排队2. 进程状态的表述2.1. 进程状态2.2 运行状态2.3. 阻塞状态2.4. 挂起状态 3. Linux下具体的进程状态3.1. 运行状态R3.2. 可中断睡眠状态S3.3. 不可中断睡眠状态D3.4. 停止状态T3.5. 死亡状态X3.6. 僵尸状态Z 4. 孤儿进程5. 优先级6. Linux的调度与切换6.1. 四个…

[代码审计]记一次简单的java代码审计

如果觉得该文章有帮助的,麻烦师傅们可以搜索下微信公众号:良月安全。点个关注,感谢师傅们的支持。 免责声明 本博客所发布的所有内容,包括但不限于信息、工具、项目以及文章,均旨在提供学习与研究之用。所有工具安全…

《代码大全》读书笔记-第Ⅰ部分 奠定基础

0.欢迎来到软件构建世界 什么是软件构件: 对于非正式及项目,会觉得罗列出来的这些活动太过于繁复。但是这些对于正式项目都是很有必要的(大部分人都没经历过,比如说我)。一般一些小公司主要也就是需求分析、编码、开发人员自测、集成测试这几…

数据库第五次作业

1. 触发器 建立触发器,订单表中增加订单数量后,商品表商品数量同步减少对应的商品订单出数量,并测试 建立触发器,实现功能:客户取消订单,恢复商品表对应商品的数量 建立触发器,实现功能:客户修改订单,商品…

步入新时代,使用区块链服务API打造创新应用

随着区块链技术的兴起,我们正步入一个全新的数据时代——一个由透明性、安全性和去中心化定义的时代。Blockchain公司的区块链API,作为连接现实世界与区块链世界的桥梁,为全球开发者和企业提供了一种前所未有的方式,以访问、交互并…