目录

一、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. 《最新出炉》系列初窥篇-Python+Playwright自动化测试-13-playwright操作iframe-下篇

    1.简介 通过前边两篇的学习,想必大家已经对iframe有了一定的认识和了解,今天这一篇主要是对iframe做一个总结,主要从iframe的操作(输入框.点击等等)和定位两个方面进行总结. 2.ifr ...

  2. 《SQL与数据库基础》19. 日志

    目录 日志 错误日志 二进制日志 日志格式 日志查看 日志删除 查询日志 慢查询日志 本文以 MySQL 为例 日志 错误日志 错误日志是 MySQL 中最重要的日志之一,它记录了当 mysql 启动 ...

  3. SSMS 显示行号

    SSMS 显示行号 SSMS2022--工具--选项--文本编辑器--所有语言--常规--勾选"行号"--确定.

  4. Django框架项目之搜索功能——搜索导航栏、搜索后台接口、搜索页面

    文章目录 1-搜索导航栏 Header搜索组件:选择性CV router/index.js Header.vue 2-搜索后台接口 路由:course/urls.py 视图:course/views. ...

  5. hadoop集群搭建及编程实践

    Hadoop集群搭建 前期准备及JDK,hadoop安装 设置主机名和添加主机映射 验证连通性 SSH无密码登录 配置集群/分布式环境 修改workers 修改文件core-site.xml 修改hd ...

  6. 如何用ppt打印9张一面,并且去除边距?

    如何用ppt打印9张一面,并且去除边距?      方法其实很简单,答主不要在ppt软件的打印选项里设置[每页打印9张幻灯片],而是使用默认的[每页打印1张幻灯片]. 然后去[打印机属性]里设置,我是 ...

  7. RK3588平台产测之ArmSoM-W3 DDR压力测试

    1. 简介 RK3588从入门到精通 ArmSoM团队在产品量产之前都会对产品做几次专业化的功能测试以及性能压力测试,以此来保证产品的质量以及稳定性 优秀的产品都要进行多次全方位的功能测试以及性能压力 ...

  8. oracle下载安装教程(带安装包)

    废话不多说上连接: 链接:https://pan.baidu.com/s/1ukUjxbTpodxwxoGQUKl8KA?pwd=y6ju 提取码:y6ju oracle下载速度太慢了我存在了百度网盘 ...

  9. QT(3)-QTableView

    @ 目录 0 相关文章 1 说明 2 常用函数 2.1 clearSpans 2.2 setSpan 2.3 columnAt 2.4 rowAt 2.5 columnSpan 2.6 rowSpan ...

  10. 监控报警体系:Prometheus和Grafana

    总体 prometheus全链路监控报警,在当今云原生时代可观测领域,Prometheus + Grafana 成为可观测性事实标准. 采集数据:运维团队可以使用 Prometheus 监控云原生 K ...