Name | mockee JSON |
Version |
0.4.0
JSON |
| download |
home_page | https://gitee.com/hyjiacan/mockee |
Summary | Mock data(JSON) generator for Python3 |
upload_time | 2024-04-11 07:25:19 |
maintainer | hyjiacan |
docs_url | None |
author | hyjiacan |
requires_python | >=3.5 |
license | MIT |
keywords |
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# mockee
Python3 的模拟数据(JSON)生成工具。
## 安装
```shell script
pip install mockee
```
## 用法
```python
from mockee import Mockee
# 加载指定的定义文件
mock = Mockee('/path/to/deffile.json')
# 生成数据
data = mock.make('GET:/api/test', {
# 当时间/日期数据项表达式为 auto 时的自动计算使用,此情况下必传的
'date_range': ['2020-01-01', '2020-12-31'],
# 指定 date_range 中传入的日期格式
# 不指定时为 %Y-%m-%d %H:%M:%S
# 不会影响生成的日期数据格式
'date_fmt': '%Y-%m-%d',
# 整数自增长的基数(从此数值开始自增),不指定时为 `0`
'i_base': 0
})
```
- `/path/to/deffile.json` 是模拟数据定义文件
- `GET:path` 叫做数据标识,一般由请求的 method+url 组成
- `data` 生成的数据。当未找到对应的声明时,返回 `None`
## 数据定义语法
在数据定义中,包含以下4类文件:
1. 入口定义文件 数据接口入口,在创建 `Mockee` 实例时应当传入 见 [defs.json](./test/defs.json)
2. 扩展定义文件 用于数据定义的共享 (要注意,不要循环引用) 见 [datetime.json](./test/datetime.json)
3. JSON数据枚举文件 用于提供JSON数据格式的枚举,其内容应该是一个数组 见 [json.json](./test/json.json)
4. 一般数据枚举文件 用于提供除 JSON 格式外的其它数据枚举,每行一项 见 [choices.txt](./test/choices.txt)
```json
{
"GET:/api/test": {
"def": {},
"len": 10
}
}
```
- `GET:/api/test` 数据标识
- `def` 描述返回的字段集合
- `len` 描述返回的数组长度,值为 `0` 时返回对象
> 包含 `GET:/api/test` 的叫做 **入口定义文件**
### 表达式
格式:`#>(i|f|b|s|j|d|t|dt|ref) exp`
当一个值使用 `#>` 开头,表示这个值应该是一个生成的值(如 `"value": "#>i 1-5"`);否则值为声明的值(如 `"type": 2`)。
`#>i:1-5` 叫做 **值表达式**,用于描述应该如何来生成一个随机的值。
参考
- [defs.json](./test/defs.json)
- [datetime.json](./test/datetime.json)
#### 数据类型
`#>` 后面,紧跟的是数据类型,可用的数据类型描述如下:
- `i` 整数值
- `f` 小数值
- `b` 布尔值
- `s` 字符串
- `j` JSON
- `d` 日期值
- `t` 时间值
- `dt` 日期时间值
- `ref` 引用外部定义文件(实现相同定义的复用)
如果其值为数组,那么在 key 名称后紧跟 `[3]` 写法,如 `iValue[3]`。
`[3]` 表示此值为数组,且其中包含 `3` 项。
> 当且仅当值表达式有效
类型后面,应该紧跟一个空白字符。
#### 值描述表达式
再后面,是值描述,其分为两种数据模式,范围和枚举:
范围(随机 **生成** 值):
- 当类型为数值时,使用 `1-5`(包含 `1` 但不包含 `5`) 这样的方式指定范围 `#>i 1-5` `#>f 0.2-0.8`
- 当为日期类型时,使用 `20200101-20201231` 这样的方式指定范围 `#>d 20200101-20201231`
- 当为时间类型时,使用 `000000-235959` 这样的方式指定范围 `#>t 000000-235959`
- 当为日期时间类型时,使用`20200101000000-20201231235959` 这样的方式指定范围 `#>dt 20200101000000-20201231235959`
- 当为字符串时,使用 `l`(小写字母), `L`(大写字母), `n`(数字), `s`(符号) 组合起来描述 `#>s lLns`(包含字母,数值和符号) `#>s lLn`(包含字母,数值)
#### 整数类型
对于类型 `i`,可以这样写 `#>i auto`,这表示使用自增长的整数。
此时需要在 `options` 中传入 `i_base` 作为自增长的基数(从此数值开始自增),不指定时为 `0`
> 原则上只允许出现一次 `#>i auto`,当出现多次时,其值相同。
#### 时间/日期类型
对于类型 `d/t/dt` ,有些特殊的写法 `#>dt auto->%Y-%m-%d`:
- 可以使用请求的日期区间自动计算日期值,写法为:`#>dt auto`。
- 在值表达式后部分,可以使用 `->%Y-%m-%d` 的方式指定日期格式化串。其写法遵守 Python 日期格式化 [strftime][strftime] 写法。
#### 枚举值
枚举(随机从给定的值中 **选择** 值),所有类型使用相同的写法:
`#>i (1,2, 4, 6, 8)`
也可以从指定的文件加载枚举值(所有类型都支持):
`#>s (#choices.txt#)`
`enum-filename` 为枚举文件名,其中每行存放一个数据项,其中不允许出现空行。
> 无论是范围还是枚举,值不允许出现空白字符
#### JSON类型
可以使用 `#>j json.json` 这样的写法来指定从一个 JSON 文件中读取所有数据。
- `j` 表示此字段的值是一个JSON结构
- `json.json` 是要读取的文件名。**注意:json文件的扩展名必须为 `.json`**
- `json.json` 文件的根可以是对象或者数组
也可以使用 `#>j (#json.json#)` 这样的写法,指定从一个 JSON 文件(数组)中随机选择数据
- `json.json` 文件的根必须是数组
> 此类型仅支持从文件读取。
#### 引用类型
使用写法 `#>ref datetime.json` 以引入一个外部的数据结构定义。
外部的数据结构定义(datetime.json)与**入口定义文件**的不同之处在于,其只包含定义部分(值为一个对象),不包含数据长度和入口名称等信息。
参考
- [defs.json](./test/defs.json)
- [datetime.json](./test/datetime.json)
> 其文件名应该是一个相对于 **入口定义文件** 的路径。
**入口定义文件** 的 `def` 项的值,也可以使用此处的引用写法。
#### 定义扩展
扩展是在同级别添加数据项。
单个扩展写法:
```json
{
"#ext#": "ext.json"
}
```
多个扩展写法:
```json
{
"#ext#": ["ext1.json", "ext2.json"]
}
```
如果扩展中包含的项已经存在于当前定义,那么会被忽略(即当前文件的定义优先于扩展文件内的定义)。
参考
- [ext.json](./test/ext.json)
> **引用类型** 和 **定义扩展** 的文件结构是一致的,其差异仅在引入的方式。
## TODO
- [ ] 支持设置数据不能重复 `?` 结尾表示数据不能重复
[strftime]: https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes
Raw data
{
"_id": null,
"home_page": "https://gitee.com/hyjiacan/mockee",
"name": "mockee",
"maintainer": "hyjiacan",
"docs_url": null,
"requires_python": ">=3.5",
"maintainer_email": "hyjiacan@163.com",
"keywords": null,
"author": "hyjiacan",
"author_email": "hyjiacan@163.com",
"download_url": "https://files.pythonhosted.org/packages/88/47/5eabbabd18e09ace3f5902147a4d6cac35dd3f307652206ff87e5d9ed758/mockee-0.4.0.tar.gz",
"platform": null,
"description": "# mockee\n\nPython3 \u7684\u6a21\u62df\u6570\u636e(JSON)\u751f\u6210\u5de5\u5177\u3002\n\n## \u5b89\u88c5\n\n```shell script\npip install mockee\n```\n\n## \u7528\u6cd5\n\n```python\nfrom mockee import Mockee\n# \u52a0\u8f7d\u6307\u5b9a\u7684\u5b9a\u4e49\u6587\u4ef6\nmock = Mockee('/path/to/deffile.json')\n# \u751f\u6210\u6570\u636e\ndata = mock.make('GET:/api/test', {\n # \u5f53\u65f6\u95f4/\u65e5\u671f\u6570\u636e\u9879\u8868\u8fbe\u5f0f\u4e3a auto \u65f6\u7684\u81ea\u52a8\u8ba1\u7b97\u4f7f\u7528\uff0c\u6b64\u60c5\u51b5\u4e0b\u5fc5\u4f20\u7684\n 'date_range': ['2020-01-01', '2020-12-31'],\n # \u6307\u5b9a date_range \u4e2d\u4f20\u5165\u7684\u65e5\u671f\u683c\u5f0f\n # \u4e0d\u6307\u5b9a\u65f6\u4e3a %Y-%m-%d %H:%M:%S\n # \u4e0d\u4f1a\u5f71\u54cd\u751f\u6210\u7684\u65e5\u671f\u6570\u636e\u683c\u5f0f\n 'date_fmt': '%Y-%m-%d',\n # \u6574\u6570\u81ea\u589e\u957f\u7684\u57fa\u6570\uff08\u4ece\u6b64\u6570\u503c\u5f00\u59cb\u81ea\u589e\uff09\uff0c\u4e0d\u6307\u5b9a\u65f6\u4e3a `0`\n 'i_base': 0\n})\n```\n\n- `/path/to/deffile.json` \u662f\u6a21\u62df\u6570\u636e\u5b9a\u4e49\u6587\u4ef6\n- `GET:path` \u53eb\u505a\u6570\u636e\u6807\u8bc6\uff0c\u4e00\u822c\u7531\u8bf7\u6c42\u7684 method+url \u7ec4\u6210\n- `data` \u751f\u6210\u7684\u6570\u636e\u3002\u5f53\u672a\u627e\u5230\u5bf9\u5e94\u7684\u58f0\u660e\u65f6\uff0c\u8fd4\u56de `None`\n\n## \u6570\u636e\u5b9a\u4e49\u8bed\u6cd5\n\n\u5728\u6570\u636e\u5b9a\u4e49\u4e2d\uff0c\u5305\u542b\u4ee5\u4e0b4\u7c7b\u6587\u4ef6\uff1a\n\n1. \u5165\u53e3\u5b9a\u4e49\u6587\u4ef6 \u6570\u636e\u63a5\u53e3\u5165\u53e3\uff0c\u5728\u521b\u5efa `Mockee` \u5b9e\u4f8b\u65f6\u5e94\u5f53\u4f20\u5165 \u89c1 [defs.json](./test/defs.json)\n2. \u6269\u5c55\u5b9a\u4e49\u6587\u4ef6 \u7528\u4e8e\u6570\u636e\u5b9a\u4e49\u7684\u5171\u4eab \uff08\u8981\u6ce8\u610f\uff0c\u4e0d\u8981\u5faa\u73af\u5f15\u7528\uff09 \u89c1 [datetime.json](./test/datetime.json)\n3. JSON\u6570\u636e\u679a\u4e3e\u6587\u4ef6 \u7528\u4e8e\u63d0\u4f9bJSON\u6570\u636e\u683c\u5f0f\u7684\u679a\u4e3e\uff0c\u5176\u5185\u5bb9\u5e94\u8be5\u662f\u4e00\u4e2a\u6570\u7ec4 \u89c1 [json.json](./test/json.json)\n4. \u4e00\u822c\u6570\u636e\u679a\u4e3e\u6587\u4ef6 \u7528\u4e8e\u63d0\u4f9b\u9664 JSON \u683c\u5f0f\u5916\u7684\u5176\u5b83\u6570\u636e\u679a\u4e3e\uff0c\u6bcf\u884c\u4e00\u9879 \u89c1 [choices.txt](./test/choices.txt)\n\n```json\n{\n \"GET:/api/test\": {\n \"def\": {},\n \"len\": 10\n }\n}\n```\n\n- `GET:/api/test` \u6570\u636e\u6807\u8bc6\n- `def` \u63cf\u8ff0\u8fd4\u56de\u7684\u5b57\u6bb5\u96c6\u5408\n- `len` \u63cf\u8ff0\u8fd4\u56de\u7684\u6570\u7ec4\u957f\u5ea6\uff0c\u503c\u4e3a `0` \u65f6\u8fd4\u56de\u5bf9\u8c61\n\n> \u5305\u542b `GET:/api/test` \u7684\u53eb\u505a **\u5165\u53e3\u5b9a\u4e49\u6587\u4ef6**\n\n### \u8868\u8fbe\u5f0f\n\n\u683c\u5f0f\uff1a`#>(i|f|b|s|j|d|t|dt|ref) exp`\n\n\u5f53\u4e00\u4e2a\u503c\u4f7f\u7528 `#>` \u5f00\u5934\uff0c\u8868\u793a\u8fd9\u4e2a\u503c\u5e94\u8be5\u662f\u4e00\u4e2a\u751f\u6210\u7684\u503c(\u5982 `\"value\": \"#>i 1-5\"`)\uff1b\u5426\u5219\u503c\u4e3a\u58f0\u660e\u7684\u503c(\u5982 `\"type\": 2`)\u3002\n\n`#>i:1-5` \u53eb\u505a **\u503c\u8868\u8fbe\u5f0f**\uff0c\u7528\u4e8e\u63cf\u8ff0\u5e94\u8be5\u5982\u4f55\u6765\u751f\u6210\u4e00\u4e2a\u968f\u673a\u7684\u503c\u3002\n\n\u53c2\u8003 \n- [defs.json](./test/defs.json)\n- [datetime.json](./test/datetime.json)\n\n#### \u6570\u636e\u7c7b\u578b\n\n`#>` \u540e\u9762\uff0c\u7d27\u8ddf\u7684\u662f\u6570\u636e\u7c7b\u578b\uff0c\u53ef\u7528\u7684\u6570\u636e\u7c7b\u578b\u63cf\u8ff0\u5982\u4e0b\uff1a\n\n- `i` \u6574\u6570\u503c\n- `f` \u5c0f\u6570\u503c\n- `b` \u5e03\u5c14\u503c\n- `s` \u5b57\u7b26\u4e32\n- `j` JSON\n- `d` \u65e5\u671f\u503c\n- `t` \u65f6\u95f4\u503c\n- `dt` \u65e5\u671f\u65f6\u95f4\u503c\n- `ref` \u5f15\u7528\u5916\u90e8\u5b9a\u4e49\u6587\u4ef6(\u5b9e\u73b0\u76f8\u540c\u5b9a\u4e49\u7684\u590d\u7528)\n\n\u5982\u679c\u5176\u503c\u4e3a\u6570\u7ec4\uff0c\u90a3\u4e48\u5728 key \u540d\u79f0\u540e\u7d27\u8ddf `[3]` \u5199\u6cd5\uff0c\u5982 `iValue[3]`\u3002\n\n`[3]` \u8868\u793a\u6b64\u503c\u4e3a\u6570\u7ec4\uff0c\u4e14\u5176\u4e2d\u5305\u542b `3` \u9879\u3002 \n\n> \u5f53\u4e14\u4ec5\u5f53\u503c\u8868\u8fbe\u5f0f\u6709\u6548\n\n\u7c7b\u578b\u540e\u9762\uff0c\u5e94\u8be5\u7d27\u8ddf\u4e00\u4e2a\u7a7a\u767d\u5b57\u7b26\u3002\n\n#### \u503c\u63cf\u8ff0\u8868\u8fbe\u5f0f\n\n\u518d\u540e\u9762\uff0c\u662f\u503c\u63cf\u8ff0\uff0c\u5176\u5206\u4e3a\u4e24\u79cd\u6570\u636e\u6a21\u5f0f\uff0c\u8303\u56f4\u548c\u679a\u4e3e\uff1a\n\n\u8303\u56f4(\u968f\u673a **\u751f\u6210** \u503c)\uff1a\n\n- \u5f53\u7c7b\u578b\u4e3a\u6570\u503c\u65f6\uff0c\u4f7f\u7528 `1-5`(\u5305\u542b `1` \u4f46\u4e0d\u5305\u542b `5`) \u8fd9\u6837\u7684\u65b9\u5f0f\u6307\u5b9a\u8303\u56f4 `#>i 1-5` `#>f 0.2-0.8`\n- \u5f53\u4e3a\u65e5\u671f\u7c7b\u578b\u65f6\uff0c\u4f7f\u7528 `20200101-20201231` \u8fd9\u6837\u7684\u65b9\u5f0f\u6307\u5b9a\u8303\u56f4 `#>d 20200101-20201231`\n- \u5f53\u4e3a\u65f6\u95f4\u7c7b\u578b\u65f6\uff0c\u4f7f\u7528 `000000-235959` \u8fd9\u6837\u7684\u65b9\u5f0f\u6307\u5b9a\u8303\u56f4 `#>t 000000-235959`\n- \u5f53\u4e3a\u65e5\u671f\u65f6\u95f4\u7c7b\u578b\u65f6\uff0c\u4f7f\u7528`20200101000000-20201231235959` \u8fd9\u6837\u7684\u65b9\u5f0f\u6307\u5b9a\u8303\u56f4 `#>dt 20200101000000-20201231235959`\n- \u5f53\u4e3a\u5b57\u7b26\u4e32\u65f6\uff0c\u4f7f\u7528 `l`(\u5c0f\u5199\u5b57\u6bcd), `L`(\u5927\u5199\u5b57\u6bcd), `n`(\u6570\u5b57), `s`(\u7b26\u53f7) \u7ec4\u5408\u8d77\u6765\u63cf\u8ff0 `#>s lLns`(\u5305\u542b\u5b57\u6bcd\uff0c\u6570\u503c\u548c\u7b26\u53f7) `#>s lLn`(\u5305\u542b\u5b57\u6bcd\uff0c\u6570\u503c)\n\n#### \u6574\u6570\u7c7b\u578b\n\n\u5bf9\u4e8e\u7c7b\u578b `i`\uff0c\u53ef\u4ee5\u8fd9\u6837\u5199 `#>i auto`\uff0c\u8fd9\u8868\u793a\u4f7f\u7528\u81ea\u589e\u957f\u7684\u6574\u6570\u3002\n\u6b64\u65f6\u9700\u8981\u5728 `options` \u4e2d\u4f20\u5165 `i_base` \u4f5c\u4e3a\u81ea\u589e\u957f\u7684\u57fa\u6570\uff08\u4ece\u6b64\u6570\u503c\u5f00\u59cb\u81ea\u589e\uff09\uff0c\u4e0d\u6307\u5b9a\u65f6\u4e3a `0`\n\n> \u539f\u5219\u4e0a\u53ea\u5141\u8bb8\u51fa\u73b0\u4e00\u6b21 `#>i auto`\uff0c\u5f53\u51fa\u73b0\u591a\u6b21\u65f6\uff0c\u5176\u503c\u76f8\u540c\u3002\n\n#### \u65f6\u95f4/\u65e5\u671f\u7c7b\u578b\n\n\u5bf9\u4e8e\u7c7b\u578b `d/t/dt` \uff0c\u6709\u4e9b\u7279\u6b8a\u7684\u5199\u6cd5 `#>dt auto->%Y-%m-%d`\uff1a\n\n- \u53ef\u4ee5\u4f7f\u7528\u8bf7\u6c42\u7684\u65e5\u671f\u533a\u95f4\u81ea\u52a8\u8ba1\u7b97\u65e5\u671f\u503c\uff0c\u5199\u6cd5\u4e3a\uff1a`#>dt auto`\u3002\n- \u5728\u503c\u8868\u8fbe\u5f0f\u540e\u90e8\u5206\uff0c\u53ef\u4ee5\u4f7f\u7528 `->%Y-%m-%d` \u7684\u65b9\u5f0f\u6307\u5b9a\u65e5\u671f\u683c\u5f0f\u5316\u4e32\u3002\u5176\u5199\u6cd5\u9075\u5b88 Python \u65e5\u671f\u683c\u5f0f\u5316 [strftime][strftime] \u5199\u6cd5\u3002\n\n#### \u679a\u4e3e\u503c\n\n\u679a\u4e3e(\u968f\u673a\u4ece\u7ed9\u5b9a\u7684\u503c\u4e2d **\u9009\u62e9** \u503c)\uff0c\u6240\u6709\u7c7b\u578b\u4f7f\u7528\u76f8\u540c\u7684\u5199\u6cd5\uff1a\n\n`#>i (1,2, 4, 6, 8)`\n\n\u4e5f\u53ef\u4ee5\u4ece\u6307\u5b9a\u7684\u6587\u4ef6\u52a0\u8f7d\u679a\u4e3e\u503c(\u6240\u6709\u7c7b\u578b\u90fd\u652f\u6301):\n\n`#>s (#choices.txt#)`\n\n`enum-filename` \u4e3a\u679a\u4e3e\u6587\u4ef6\u540d\uff0c\u5176\u4e2d\u6bcf\u884c\u5b58\u653e\u4e00\u4e2a\u6570\u636e\u9879\uff0c\u5176\u4e2d\u4e0d\u5141\u8bb8\u51fa\u73b0\u7a7a\u884c\u3002\n\n> \u65e0\u8bba\u662f\u8303\u56f4\u8fd8\u662f\u679a\u4e3e\uff0c\u503c\u4e0d\u5141\u8bb8\u51fa\u73b0\u7a7a\u767d\u5b57\u7b26\n\n#### JSON\u7c7b\u578b\n\n\u53ef\u4ee5\u4f7f\u7528 `#>j json.json` \u8fd9\u6837\u7684\u5199\u6cd5\u6765\u6307\u5b9a\u4ece\u4e00\u4e2a JSON \u6587\u4ef6\u4e2d\u8bfb\u53d6\u6240\u6709\u6570\u636e\u3002\n\n- `j` \u8868\u793a\u6b64\u5b57\u6bb5\u7684\u503c\u662f\u4e00\u4e2aJSON\u7ed3\u6784\n- `json.json` \u662f\u8981\u8bfb\u53d6\u7684\u6587\u4ef6\u540d\u3002**\u6ce8\u610f\uff1ajson\u6587\u4ef6\u7684\u6269\u5c55\u540d\u5fc5\u987b\u4e3a `.json`**\n- `json.json` \u6587\u4ef6\u7684\u6839\u53ef\u4ee5\u662f\u5bf9\u8c61\u6216\u8005\u6570\u7ec4\n\n\u4e5f\u53ef\u4ee5\u4f7f\u7528 `#>j (#json.json#)` \u8fd9\u6837\u7684\u5199\u6cd5\uff0c\u6307\u5b9a\u4ece\u4e00\u4e2a JSON \u6587\u4ef6(\u6570\u7ec4)\u4e2d\u968f\u673a\u9009\u62e9\u6570\u636e\n\n- `json.json` \u6587\u4ef6\u7684\u6839\u5fc5\u987b\u662f\u6570\u7ec4\n\n> \u6b64\u7c7b\u578b\u4ec5\u652f\u6301\u4ece\u6587\u4ef6\u8bfb\u53d6\u3002 \n\n#### \u5f15\u7528\u7c7b\u578b\n\n\u4f7f\u7528\u5199\u6cd5 `#>ref datetime.json` \u4ee5\u5f15\u5165\u4e00\u4e2a\u5916\u90e8\u7684\u6570\u636e\u7ed3\u6784\u5b9a\u4e49\u3002\n\n\u5916\u90e8\u7684\u6570\u636e\u7ed3\u6784\u5b9a\u4e49(datetime.json)\u4e0e**\u5165\u53e3\u5b9a\u4e49\u6587\u4ef6**\u7684\u4e0d\u540c\u4e4b\u5904\u5728\u4e8e\uff0c\u5176\u53ea\u5305\u542b\u5b9a\u4e49\u90e8\u5206(\u503c\u4e3a\u4e00\u4e2a\u5bf9\u8c61)\uff0c\u4e0d\u5305\u542b\u6570\u636e\u957f\u5ea6\u548c\u5165\u53e3\u540d\u79f0\u7b49\u4fe1\u606f\u3002 \n\n\u53c2\u8003 \n- [defs.json](./test/defs.json)\n- [datetime.json](./test/datetime.json)\n\n> \u5176\u6587\u4ef6\u540d\u5e94\u8be5\u662f\u4e00\u4e2a\u76f8\u5bf9\u4e8e **\u5165\u53e3\u5b9a\u4e49\u6587\u4ef6** \u7684\u8def\u5f84\u3002\n\n**\u5165\u53e3\u5b9a\u4e49\u6587\u4ef6** \u7684 `def` \u9879\u7684\u503c\uff0c\u4e5f\u53ef\u4ee5\u4f7f\u7528\u6b64\u5904\u7684\u5f15\u7528\u5199\u6cd5\u3002\n\n#### \u5b9a\u4e49\u6269\u5c55\n\n\u6269\u5c55\u662f\u5728\u540c\u7ea7\u522b\u6dfb\u52a0\u6570\u636e\u9879\u3002\n\n\u5355\u4e2a\u6269\u5c55\u5199\u6cd5:\n\n```json\n{\n \"#ext#\": \"ext.json\"\n}\n```\n\n\u591a\u4e2a\u6269\u5c55\u5199\u6cd5:\n\n```json\n{\n \"#ext#\": [\"ext1.json\", \"ext2.json\"]\n}\n```\n\n\u5982\u679c\u6269\u5c55\u4e2d\u5305\u542b\u7684\u9879\u5df2\u7ecf\u5b58\u5728\u4e8e\u5f53\u524d\u5b9a\u4e49\uff0c\u90a3\u4e48\u4f1a\u88ab\u5ffd\u7565(\u5373\u5f53\u524d\u6587\u4ef6\u7684\u5b9a\u4e49\u4f18\u5148\u4e8e\u6269\u5c55\u6587\u4ef6\u5185\u7684\u5b9a\u4e49)\u3002 \n\n\u53c2\u8003 \n- [ext.json](./test/ext.json)\n\n> **\u5f15\u7528\u7c7b\u578b** \u548c **\u5b9a\u4e49\u6269\u5c55** \u7684\u6587\u4ef6\u7ed3\u6784\u662f\u4e00\u81f4\u7684\uff0c\u5176\u5dee\u5f02\u4ec5\u5728\u5f15\u5165\u7684\u65b9\u5f0f\u3002\n\n## TODO\n\n- [ ] \u652f\u6301\u8bbe\u7f6e\u6570\u636e\u4e0d\u80fd\u91cd\u590d `?` \u7ed3\u5c3e\u8868\u793a\u6570\u636e\u4e0d\u80fd\u91cd\u590d\n\n[strftime]: https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes\n\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Mock data(JSON) generator for Python3",
"version": "0.4.0",
"project_urls": {
"Code": "https://gitee.com/hyjiacan/mockee",
"Documention": "https://gitee.com/hyjiacan/mockee/wikis",
"Homepage": "https://gitee.com/hyjiacan/mockee",
"Issue tracker": "https://gitee.com/hyjiacan/mockee/issues"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "240213e86a93a65cc4fe241490d28c7afa98683aaae7241188ee96ebdb479a59",
"md5": "ac97afde098666bce720f8e793199d66",
"sha256": "1dbaeee0b110cc1f571010fe1e31084c60b8ee4e51fcf7a62bbf4703b05712e2"
},
"downloads": -1,
"filename": "mockee-0.4.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ac97afde098666bce720f8e793199d66",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.5",
"size": 8728,
"upload_time": "2024-04-11T07:25:18",
"upload_time_iso_8601": "2024-04-11T07:25:18.668442Z",
"url": "https://files.pythonhosted.org/packages/24/02/13e86a93a65cc4fe241490d28c7afa98683aaae7241188ee96ebdb479a59/mockee-0.4.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "88475eabbabd18e09ace3f5902147a4d6cac35dd3f307652206ff87e5d9ed758",
"md5": "7150aed5d07db79fd7ac4a403bb16db1",
"sha256": "ffb8ac82c2d95e208bf9946cc98742b30a84f599be897c6a5ade1b709b0b5775"
},
"downloads": -1,
"filename": "mockee-0.4.0.tar.gz",
"has_sig": false,
"md5_digest": "7150aed5d07db79fd7ac4a403bb16db1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.5",
"size": 8532,
"upload_time": "2024-04-11T07:25:19",
"upload_time_iso_8601": "2024-04-11T07:25:19.816752Z",
"url": "https://files.pythonhosted.org/packages/88/47/5eabbabd18e09ace3f5902147a4d6cac35dd3f307652206ff87e5d9ed758/mockee-0.4.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-04-11 07:25:19",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "mockee"
}