0
点赞
收藏
分享

微信扫一扫

python之mock

RockYoungTalk 2021-09-18 阅读 71

1.mock是什么

不容易构造、获取的对象,用一个虚拟的对象来替代他,这个虚拟的对象就是mock。
场景:前后端分离的项目,后端工程师还没有完成接口,可以通过mock的方式先虚拟这些接口返回回来进行代替,提高工作效率。
mock实现方式:通过json文件添加脚本关键字,来模拟各种情况下的请求和返回值。
脚本关键字:cookies、header、重定向等各种参数。
注意事项:mock是热更新,启动jar包服务之后,即使修改了json文件中的内容,也不需要重启服务就生效。

2.mock需要了解的概念

mock需要了解mock数据和mock服务。

  • mock数据:即mock一个对象,写入一些预期值,通过它进行自己想要的测试。比如:easymock、mockito、wiremock、jmockit。主要用于单元测试。
  • mock服务:mock一个sever,构造一个依赖的服务并给予他预期的服务返回值,适合集成测试。如moco框架。
    moco框架:mock的工具框架,一个简单搭建模拟服务器的程序库/工具,下载一个jar包。特点如下:
  1. 只需要简单的配置request、response等
  2. 支持http、https、socket协议
  3. 支持在request中设置Headers、cookies、statuscode等
    4.对GET、POST、PUT、DELETE等请求方式
  4. 无需环境配置,有java环境即可
  5. 修改配置后,立刻生效。只需要维护接口
  6. 支持多种数据格式,如JSON、Text、XML、File等
  7. 可与其他工具集成,如Junit、Maven

3.moco框架

  1. moco框架jar包下载:gitlab下载moco的jar包:https://github.com/dreamhead/moco

  2. 配置json文件
    json文件,用来模拟不同的请求,返回不同的响应。
>test.json文件
 [{
  "description":"demo",  #注释(描述)
  "request":{          #请求的值
   "uri":"/demo1"   #接口的统一资源标识符,可以根据模拟的接口自行定义
   },
  "response":{      #响应的值
   "text":"Hello,demo1"   #返回的值
  }
 }]
  1. 启动moco
    moco项目是采用java开发,需要优先安装jdk。
    输入命令:java -jar moco-runner-1.1.0-standalone.jar http -p 9090 -c test.json
    其中
    jar包的名称可根据自己下载的jar包版本来写
    http代表这个模拟的是http请求
    -p 9090 定义是端口号
    -c test.json 是我们编辑的那个json文件名。
    浏览器访问:http://localhost:9090/demo1


4. moco中json脚本关键字

headers
cookies
text、json
redirectTo

>1.约定URI
[{
    "description": "demo1=约定URI",
    "request": {
        "uri": "/demo1"
    },
    "response": {
        "text": "Hello,demo1"
    }
}]
>2.约定请求参数
[{
    "description": "demo2=约定请求参数",
    "request": {
        "queries": {
            "key1": "abc",
            "key2": "123"
        }
    },
    "response": {
        "text": "Hello,demo2"
    }
}]
>demo3:约定请求方法
[{
  "description":"demo3=约定请求方法",
  "request":{
   "method":"DELETE"
   },
  "response":{
   "text":"Hello,demo3"
  }
 }]
>demo4:约定请求头
[{
  "description":"demo4=约定请求头",
  "request":{
   "headers":{
    "Content-Type":"application/xml"
    }
   },
  "response":{
   "text":"Hello,demo4"
  }
 }]
>demo5:约定请求体参数-form
[{
  "description":"demo5=约定请求体参数-form",
  "request":{
   "forms":{
    "key1":"abc"
    }
   },
  "response":{
   "text":"Hello,demo5"
  }
 }]
>demo6:约定请求体参数-json
[{
  "description":"demo6=约定请求体参数-json",
  "request":{
   "headers":{
    "Content-Type":"application/json"
    },
   "json":{
     "key1":"value1",
     "key2":"value2"
    }
   },
  "response":{
   "text":"Hello,demo6"
  }
 }]
举报

相关推荐

0 条评论