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关键字)
参考文档
- Json schema用法 http://json-schema.org/
- JSON Schema入门 https://www.jianshu.com/p/1711f2f24dcf?utm_campaign=hugo
- python打包及支持pip安装 https://blog.csdn.net/sinat_33718563/article/details/88928950
Project details
Release history Release notifications | RSS feed
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
Close
Hashes for easy_mock-1.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 18affab8d14a302d4915e4f716fb8a431f8b9ab7d767952c7fa4689cc9723c83 |
|
MD5 | 6a9d921c9270ad70da92f1171952b9da |
|
BLAKE2b-256 | 0c56a7ab83bad37a10081063a213db0e8cf7ec1237a38e53831b51d9fda6db7c |