Skip to main content

Generate mock service according to the YAML/JSON file in the current directory

Project description

Easy Mock

针对个人和公司提供有偿UI自动化技术、接口自动化技术、接口mock技术等培训及测试工具定制开发

  • 有意者请联系 QQ:40690263

简单、易用的接口Mock工具

  • 根据Yaml文件快速生成接口Mock服务
  • 要求python版本 > 3.7

Yaml文件示例

example.yml

apis:
  # 最精简写法
  - url: login # 接口路径
    method: GET # 接口方法
    defined_data_list: # request与response的匹配关系
      [
        {
          body: { "username": "edison", "password": "123" },
          response: { "code": -1, "msg": "密码输入不正确" }
        }
      ]

v 1.0 主要功能

  • 根据Yaml文件内容返回Mock数据,两种方式:
    • 一、根据request内容返回defined_data_list中与之匹配的response
    • 二、若defined_data_list未定义或无与request内容匹配的response,则根据response_schema返回随机数据:
      • 支持的随机数据类型: bool, int, float, double, string
  • 根据PB(.proto)生成Mock接口文件(yml)
  • 支持输入文件和目录
  • 支持http/https
  • 支持对request和response做定制化处理(见自定义扩展)

安装

两种安装方式:
一、pip安装(不需要源码)
pip install easy-mock

二、源码安装(需安装setuptools)
下载源码并进入到setup.py所在目录
python setup.py install

使用

查看帮助

$ easy_mock -h
usage: easy_mock [-h] [-v] [-p PORT] [-https] [-req] [-res] file_path

Generate mock service according to the YAML file

positional arguments:
  file_path      yaml configuration file, directory or .proto file

optional arguments:
  -h, --help     show this help message and exit
  -v, --version  show version
  -p             mock service port
  -https         enable mock server https protocol
  -req           generate request_schema in yaml
  -res           generate response_schema in yaml

启动Mock Server

服务启动后可调用yml中定义的mock服务

easy_mock example.yml
curl -H "Content-Type: application/json" -X POST 'http://127.0.0.1:9000/login' -d '{"username":"edison", "password": "123"}' | python -m json.tool

自定义扩展

在当前目录下新建python文件 processor.py

$ touch processor.py
$ vim processor.py

# 函数命名无限制,在yaml指定函数名即可 
def xxx_setup(req): 

    req["username"] = "abc"

    return req

def xxx_teardown(req, resp):

    resp["age"] = 100

    return resp

在YAML文件中新增setup or teardown字段

apis:
  login:
    name: 用户登录
    desc: 用户登录成功,接口会返回一个token
    method: POST
    setup: xxxx_setup # 指定前置处理函数名,此函数接受一个参数, 对请求体做前置操作
    teardown: xxx_teardown # 指定后置处理函数名,此函数接受两个参数, 对请求体和响应体做后置操作

Yaml文件示例及详解(复杂写法)

  - url: login # 接口路径
    method: POST # 接口方法
    request_schema: # (可选)用于对request body做合法性校验
      {
        "type": "object",
        "properties": {
          "username": {
            "type": "string"
          },
          "password": {
            "type": "string"
          },
        },
        "required": [
            "username",
            "password"
        ]
      }
    response_schema: # (可选) 根据schema生成response随机数据  response_schema 和 defined_data_list 二者不可全为空
      {
        "type": "object",
        "properties": {
          "code": {
            "type": "integer", # 数据类型
            "maximun": 100, # 数据范围 最大
            "minimun": 1 # 数据范围 最小
          },
          "msg": {
            "type": "string"
          },
          "token": {
            "type": "string"
          },
        },
        "required": [ # required中的字段,response中必须返回, token字段则随机返回
            "code",
            "msg"
        ]
      }
    defined_data_list: # 自定义返回 如果请求体于list中的body匹配, 则返回对应的response  response_schema 和 defined_data_list必须有一个匹配
      [
        {
          body: { "username": "edison", "password": "123" },
          response: { "code": -1, "msg": "密码输入不正确" }
        },
        {
          body: { "password": "123" },
          response: { "code": -1, "msg": "用户名是必填的" }
        }
      ]

将PB转换为Yaml

参数为.proto文件类型时生成yaml文件

easy_mock server.proto -res
输出server.yml

To Do

  • 支持Swagger定义的接口文件
  • 支持Request,Response schema存放在单独的文件
  • 支持延时返回(sleep关键字)

参考文档

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

easy_mock-1.1-py2.py3-none-any.whl (15.7 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page