Mock测试之Moco框架环境搭建及使用

一、前言

Mock测试:在测试过程中,对于某些不容易构造或者不容易获取的比较复杂的对象,用一个虚拟的对象(Mock 对象)来创建以便测试的测试方法。在实际工作中,后端接口未开发完成时,前端界面却开发完成,可以使用Mock的方式,来给前端返回想要的数据

二、Moco框架环境搭建

2.1 下载jar包

2.2 创建json文件

  • 在目录下创建一个json文件,并配置请求响应即可
    在这里插入图片描述
    [
      {
        "description": "第一个接口",
        "request": {
          "uri":"/firstDemo"
        },
        "response": {
          "text": "firstDemo"
        }
      }
    ]
    

2.3 启动服务

  • 命令格式
    java -jar jar包路径 http -p 监听端口 -c json配置文件
    
  • 实际效果
    java -jar  ./moco-runner-0.11.1-standalone.jar http -p 9090 -c first.json
    
    在这里插入图片描述
  • 提示:使用Ctrl+C命令可以退出并停止服务,如果需要修改json文件内容,修改保存后会自动重启服务,无须自己重启。

2.4 效果展示

  • 由于上面配置的不是Post请求,可以直接 http://localhost:端口号/URI访问,并在界面上查看响应结果。
    在这里插入图片描述

2.5 响应中文显示问题

  • 如果响应信息中有中文,为了中文显示正常,在response中添加下面内容即可。
    "headers":{
    "Content-Type":"text/html;charset=gbk"
    }
    

三、Mock框架使用

Moco框架的基本使用就是上面这些内容,关于详细的各种请求的配置方式,可以参考官方文档:这是官方文档

3.1 Get请求

  • 在request中添加"method": "get"即可。

    {
    "description": "这是一个get请求的demo",
    "request": {
      "uri": "/getDemo",
      "method": "get"
    },
    "response": {
      "text": "这是一个没有参数的get请求",
      "headers":{
        "Content-Type":"text/html;charset=gbk"
      }
    }
    

3.2 带参数的Get请求

  • 在request中添加"queries": {}即可。
    {
    "description": "这是一个带参数的Get请求的Demo",
    "request": {
      "uri": "/getWithParam",
      "method": "get",
      "queries": {
        "name": "张三",
        "sex": "20"
       }
     },
    "response": {
      "text": "我张三会来了",
      "headers":{
        "Content-Type":"text/html;charset=gbk"
       }
     }
    }
    

3.3 Post请求

  • 在request中添加"method": "post"即可。

    {
    "description": "这是一个不带参数的post请求",
    "request": {
      "uri": "/postDemo",
      "method": "post"
     },
    "response": {
      "text": "这是一个不带参数的Post请求",
      "headers":{
        "Content-Type":"text/html;charset=gbk"
       }
     }
    }
    

3.4 带参数的Post请求

  • 在request中添加"forms": {}即可。
    {
    "description": "这是一个带参数的post请求",
    "request": {
      "uri": "/postWithParam",
      "method": "post",
      "forms": {
        "name": "张三",
        "sex": "man"
      }
     },
    "response": {
      "text": "我张三带着参数回来了",
      "headers":{
        "Content-Type":"text/html;charset=gbk"
       }
     }
    }
    

3.5 返回cookie信息的Get请求

  • 返回信息response中添加"cookies":{}即可
    {
    "description":"这是一个会返回cookie信息的get请求",
    "request": {
      "uri": "/getCookies",
      "method": "get"
     },
    "response": {
      "cookies": {
        "login": "true"
       },
      "text": "恭喜你获得cookies信息成功",
      "headers":{
        "Content-Type":"text/html;charset=gbk"
       }
     }
    }
    

3.6 带cookie信息的get请求

  • 在请求信息request中添加"cookies":{}即可。
    {
    "description": "这是一个带有cookie信息才能访问的get请求",
    "request": {
      "method": "get",
      "uri": "/getWithCookies",
      "cookies": {
        "login": "true"
       }
     },
    "response": {
      "text": "这是一个需要携带cookies才能访问get请求",
      "headers":{
        "Content-Type":"text/html;charset=gbk"
       }
     }
    }
    

3.7 带cookie信息的post请求

  • 在请求信息request中添加"cookies":{}即可。
    {
    "description": "这是一个需要带有cookie信息才能访问的post请求",
    "request": {
      "method": "post",
      "uri": "/postWithCookie",
      "cookies": {
        "login":"true"
      },
      "json": {
        "name": "张三",
        "age": "18"
      }
     },
    "response": {
      "status":200,
      "json": {
        "name":"张三",
        "status": "1"
      }
     }
    }
    

3.8 带header信息的post请求

  • 在请求request中添加"headers":{}即可。
    {
    "description": "这是一个带header信息的post请求",
    "request": {
      "method": "post",
      "uri": "/postWithHeaders",
      "json": {
        "a":"success",
        "status": "1"
      },
      "headers": {
        "Content-Type": "application/json"
      }
    },
    "response": {
      "json": {
        "李四":"success",
        "status": "1"
      }
     }
    }
    

四、代码汇总下载

上面这些各种请求的情况,都汇总中一个json中了。且由于post请求在页面中验证不了是否成功,使用jmeter验证接口是否成功。

  • 百度云下载:百度云下载 提取码:l8fo
    在这里插入图片描述
    在这里插入图片描述
    参考链接汇总(自用):

https://blog.csdn.net/lt326030434/article/details/80339397
https://blog.csdn.net/qq_41829492/article/details/88093147
https://blog.csdn.net/wangyiyice/article/details/53586012
https://www.cnblogs.com/hanschen-coder/p/6528829.html

猜你喜欢

转载自blog.csdn.net/qq_37688023/article/details/106699468