目录

一、Moco框架基本介绍

1. 什么是Moco

moco是一个简单搭建模拟服务器的程序库/工具,是一个简单单间stub的框架,主要用于测试和集成。

Mock可以提供以下协议和类型的mock服务:

  • HTTP APIs
  • Socket APIs
  • REST API

2. Moco原理简介

  • Moco会根据一些配置启动一个真正的HTTP服务(监听本地的某个端口)。当发起请求满足一个条件时,它就回复一个应答。Moco的底层没有依赖于像Servlet这样的重型框架,而是基于一个叫Netty网络应用框架,这样就绕过了复杂的应用服务器。
  • Moco本身支持API和独立运行两种方式,通过使用API,测试开发人员可以在JUnit、JBehave等测试框架中使用Moco。也可以世界通过Json脚本使用。

3. Moco的配置和运行

java运行环境+moco-runner.0.11.0-standalone.jar

jar包的下载地址:

https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/0.11.0/

可以下载jar包:

4. Moco启动以及第一个demo

启动命令:

java -jar ./moco-runner-0.11.0-standalone.jar 服务类型 -p 端口号 -c json配置文件

例如:

java -jar ./moco-runner-0.11.0-standalone.jar http -p 8809 -c startup.json

如果要带路径:

java -jar "D:/moco-runner-0.11.0-standalone.jar" http -p 8809 -c "D:\startup.json"

说明:

本地启动了一个http Server,其中监听端口是8809,配置文件是 startup.json。用户可以在本机发起一个请求,如 http://localhost:8809,json不支持注释。description 字段中可以写注释。

二、mock 的启动及第一个demo

1. 创建startup.json文件

[
{
"description": "这是我们的第一个mock例子",
"request": {
"uri": "/demo"
},
"response": {
"text": "Hello world"
}
}
]

2. 启动moco

java -jar ./moco-runner-0.11.0-standalone.jar http -p 8809 -c startup.json

3. 浏览器输入本地网址127.0.0.1:8809/demo



这个是一个不带参数的get方法

注意:修改json文件不用重新部署,服务热部署,会自动重启

三、不带参数的get方法:Method(GET)

[
{
"description": "模拟一个没有参数的get请求",
"request": {
"uri": "/getdemo",
"method": "get"
},
"response": {
"text": "This is a request with no paramerters"
}
}
]

请求结果:

四、带参数的get方法:queries

[
{
"description": "模拟一个有参数的get请求",
"request": {
"uri": "/getdemo",
"method": "get",
"queries": {
"name": "1",
"age": "2"
}
},
"response": {
"text": "This is a GET request with two paramerters"
}
}
]

请求结果:

五、不带参数的post方法:Method(Post)

  • json内容:
[
{
"description": "模拟一个没有参数的post请求",
"request": {
"uri": "/postdemo",
"method": "post"
},
"response": {
"text": "这是一个没参数的post请求",
"headers":{
"Content-Type":"text/html;charset=gbk"
}
}
}
]
  • 启动:
java -jar ./moco-runner-0.11.0-standalone.jar http -p 8899 -c startupPost.json
  • 使用jemeter做接口测试:

    1)添加线程组

    2)添加Sampler-HTTP请求

    3)添加监听器-查看结果树

    4)HTTP请求添加参数



    5)查看结果:



六、带参数的post方法:Forms

  • json内容:
[
{
"description": "模拟一个有参数的post请求",
"request": {
"uri": "/with/params/postdemo",
"method": "post",
"forms": {
"name": "1",
"age": "2"
}
},
"response": {
"text": "这是一个有参数的post请求",
"headers":{
"Content-Type":"text/html;charset=gbk"
}
}
}
]
  • 启动:
java -jar ./moco-runner-0.11.0-standalone.jar http -p 8899 -c startupPost.json
  • 使用jemeter做接口测试:

    1)添加线程组

    2)添加Sampler-HTTP请求和参数



    3)添加监听器-查看结果树



七、Moco框架中如何加入Cookies

1. 请求中带cookies信息的get请求

  • json内容:
[
{
"description":"这是一个request请求中带cookies信息的get请求",
"request":{
"uri":"/get/with/cookies",
"method":"get",
"cookies":{
"login":"true"
}
},
"response":{
"text":"返回这是一个request请求中带cookies信息的get请求"
}
}
]
  • 启动服务:
java -jar ./moco-runner-0.11.0-standalone.jar http -p 8899 -c startupPost.json
  • 使用jmeter做接口测试:

    1)添加线程组

    2)添加Sampler-HTTP请求和参数



    3)添加HTTP cookie管理器:



    4)添加监听器-查看结果树

2. 请求中带cookies的post请求

  • json内容:
[
{
"description":"这是一个带cookies信息的post请求",
"request":{
"uri":"/post/with/cookies",
"method":"post",
"cookies":{
"login":"true"
},
"json":{
"name":"huhansan",
"age":"18"
}
},
"response":{
"status":200,
"json":{
"huhansan":"success",
"status":"1"
},
"headers":{
"Content-Type":"text/html;charset=gbk"
}
}
}
]
  • 使用jmeter做接口测试:

    1)添加线程组

    2)添加Sampler-HTTP请求和参数



    3)添加HTTP cookie管理器:同上

    4)添加监听器-查看结果树





3. response返回中带有cookies信息的get请求

  • json内容:
[
{
"description":"模拟response返回中带有cookies信息的get请求",
"request":{
"uri":"/resopnse/with/cookies",
"method":"get"
},
"response":{
"cookies":{
"login":"true",
"token":"1234567890" },
"json":{
"name":"zhoujielun",
"age":"38"
}
}
}
]
  • 使用jmeter做接口测试:

    1)添加线程组

    2)添加Sampler-HTTP请求和参数



    3)添加监听器-查看结果树



4. 带header信息的post请求

  • json内容:
[
{
"description":"这是一个带header信息的post请求",
"request":{
"uri":"/post/with/headers",
"method":"post",
"headers":{
"content-type":"application/json"
},
"json":{
"name":"huqiqi",
"sex":"women"
}
},
"response":{
"json":{
"huqiqi":"success",
"status":1
}
}
]
  • 使用jmeter做接口测试:

    1)添加线程组

    2)添加Sampler-HTTP请求和参数



    3)jemeter添加HTTP信息头管理器:





    4)添加监听器-查看结果树





八、Moco框架中如何进行重定向

1. 有重定向的接口(redirectTo)

  • json内容:
[
{
"description":"模拟重定向接口",
"request":{
"uri":"/redirectto"
},
"redirectTo":"/redirectedpath"
},
{
"description":"模拟被重定向的接口",
"request":{
"uri":"/redirectedpath"
},
"response":{
"text":"返回重定向结果",
"headers":{
"Content-Type":"text/html;charset=gbk"
}
}
}
]
  • 使用jmeter做接口测试:

    1)添加线程组

    2)添加Sampler-HTTP请求和参数:HTTP请求勾选Follow Redirects(跟随重定向):



    3)添加监听器-查看结果树



九、Moco框架响应

1. 约定以指定json作为响应

[
{
"request":{
"uri":"/responseJson"
},
"response":{
"json":{
"username":"mocor"
}
}
}
]

2. 约定Status:模拟各种状态码以达到我们测试需要的结果

[
{
"request":{
"uri":"/responseStatus"
},
"response":{
"status":200
}
}
]

3. 约定响应Headers

[
{
"request":{
"uri":"/responseHeaders"
},
"response":{
"headers":{
"content-type":"application/json"
}
}
}
]

4. 约定响应Cookies

[
{
"request":{
"uri":"/responseCookies"
},
"response":{
"cookies":{
"username":"chenlei"
}
}
}
]

Mock框架moco学习笔记的更多相关文章

  1. go微服务框架kratos学习笔记五(kratos 配置中心 paladin config sdk [断剑重铸之日,骑士归来之时])

    目录 go微服务框架kratos学习笔记五(kratos 配置中心 paladin config sdk [断剑重铸之日,骑士归来之时]) 静态配置 flag注入 在线热加载配置 远程配置中心 go微 ...

  2. jfinal框架教程-学习笔记

    jfinal框架教程-学习笔记 JFinal  是基于 Java  语言的极速  WEB  + ORM  开发框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restfu ...

  3. Java框架spring 学习笔记(十八):事务管理(xml配置文件管理)

    在Java框架spring 学习笔记(十八):事务操作中,有一个问题: package cn.service; import cn.dao.OrderDao; public class OrderSe ...

  4. Mina框架的学习笔记——Android客户端的实现

    Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络 ...

  5. golang日志框架--logrus学习笔记

    golang日志框架--logrus学习笔记 golang标准库的日志框架非常简单,仅仅提供了print,panic和fatal三个函数,对于更精细的日志级别.日志文件分割以及日志分发等方面并没有提供 ...

  6. # go微服务框架kratos学习笔记六(kratos 服务发现 discovery)

    目录 go微服务框架kratos学习笔记六(kratos 服务发现 discovery) http api register 服务注册 fetch 获取实例 fetchs 批量获取实例 polls 批 ...

  7. go微服务框架kratos学习笔记七(kratos warden 负载均衡 balancer)

    目录 go微服务框架kratos学习笔记七(kratos warden 负载均衡 balancer) demo demo server demo client 池 dao service p2c ro ...

  8. go微服务框架kratos学习笔记四(kratos warden-quickstart warden-direct方式client调用)

    目录 go微服务框架kratos学习笔记四(kratos warden-quickstart warden-direct方式client调用) warden direct demo-server gr ...

  9. go微服务框架kratos学习笔记八 (kratos的依赖注入)

    目录 go微服务框架kratos学习笔记八(kratos的依赖注入) 什么是依赖注入 google wire kratos中的wire Providers injector(注入器) Binding ...

  10. go微服务框架kratos学习笔记九(kratos 全链路追踪 zipkin)

    目录 go微服务框架kratos学习笔记九(kratos 全链路追踪 zipkin) zipkin使用demo 数据持久化 go微服务框架kratos学习笔记九(kratos 全链路追踪 zipkin ...

随机推荐

  1. AI绘画:StableDiffusion炼丹Lora攻略-实战萌宠图片生成

    写在前面的话 近期在小红书发现了许多极其可爱.美观的萌宠图片,对这些美妙的图像深深着迷 于是想着看看利用AI绘画StableDiffusion以下简称(SD)做出来. 以下是详细实操的全过程,包括所有 ...

  2. WPF学习 - 闭坑(持续更新)

    坑1:自定义控件设计原则: 既然称之为控件,那么就必定有界面与行为两部分. 界面就是展示给用户看的,用于承载类的属性.方法.事件等. 行为就是类的方法,以及这些方法需要用到的属性.字段等. WPF设计 ...

  3. WPF中的DesignerProperties

    在WPF开发过程中,最容易遇到的一个问题:就是在自定义控件的过程中写好业务逻辑后,在调用的地方,打开.xmal文件设计器时出现异常,经过排查发现是由于自定义控件初始化过程中需要进行赋值操作.为了能够让 ...

  4. Blazor前后端框架Known-V1.2.15

    V1.2.15 更新日期 2023-09-17 更新内容 修复角色不启用相关问题 RadioList组件支持平原(Plain)模式 CheckList组件支持平原(Plain)模式 DataGrid组 ...

  5. 图解Spark排序算子sortBy的核心源码

    原创/朱季谦 一.案例说明 以前刚开始学习Spark的时候,在练习排序算子sortBy的时候,曾发现一个有趣的现象是,在使用排序算子sortBy后直接打印的话,发现打印的结果是乱序的,并没有出现完整排 ...

  6. Solution -「洛谷 P3267」「JLOI 2016」「SHOI 2016」侦察守卫

    Description Link. 给你一棵树,放置守卫在某个点上面需要一定代价和一定的有效范围.让你覆盖若干指定点,求最小代价 Solution 算法标签: $\ \ \ \ \ \ \ \ \ $ ...

  7. ElasticSearch系列——介绍、安装、插件介绍、安装ElasticSearch插件、安装Kibana、安装中文分词器、倒排索引、索引操作、映射管理

    文章目录 ElasticSearch之介绍 一 Elasticsearch产生背景 1.1 大规模数据如何检索 1.2 传统数据库的应对解决方案 1.3 非关系型数据库解决方案 1.4 内存数据库解决 ...

  8. Composite 组合模式简介与 C# 示例【结构型3】【设计模式来了_8】

    〇.简介 1.什么是组合设计模式? 一句话解释:   针对树形结构的任意节点,都实现了同一接口,他们具有相同的操作,可以通过某一操作来遍历全部节点. 组合模式通过使用树形结构来组合对象,用来表示部分以 ...

  9. 算法修养--A*寻路算法

    A*寻路算法 广度优先算法 广度优先算法搜索以广度做未优先级进行搜索. 从起点开始,首先遍历起点周围邻近的点,然后再遍历已经遍历过的点邻近的点,逐步的向外扩散,直到找到终点. 这种算法就像洪水(Flo ...

  10. Docker从了解到部署应用的详细教程

    一.Docker基础知识 1.Docker (1)Docker可以让开发者打包他们的应用以及依赖包到一个轻量级.可以移植的容器中,然后发布到任何的linux机器上,可以实现虚拟化: (2)Docker ...