以风格化的方式逆向工程服务
项目描述
Meeshkan
Meeshkan是一个工具,用于在沙盒中模拟HTTP API,以及用于自动化和探索性测试。它结合API定义、记录的流量和代码,以使模拟制作尽可能愉快。
在Gitter上与我们聊天,告诉我们有关问题、问题或想法!
本文件包含内容
安装
通过 pip 安装(需要 Python 3.6+)
pip install meeshkan
macOS 用户可以使用 Homebrew 安装 Meeshkan
brew tap meeshkan/tap
brew install meeshkan
Debian 和 Ubuntu 用户可以使用 apt
安装 Meeshkan
echo "deb [trusted=yes] https://dl.bintray.com/meeshkan/apt all main" | tee -a /etc/apt/sources.list
apt-get -qq update && apt-get install meeshkan
开始使用Meeshkan
Meeshkan 的基本流程是 收集、构建和模拟。
- 首先,收集 记录的服务器流量和/或 OpenAPI 规范。
- 然后,构建 一个统一这些各种数据源的架构。
- 最后,使用此架构创建 API 的 模拟 服务器。
教程
要快速了解 Meeshkan,请完成我们的 交互式教程。它将指导您完成收集、构建和模拟流程 - 同时还涵盖了开发所需的概念。
首先,通过 pip 安装 meeshkan-tutorial
$ pip install meeshkan-tutorial
$ meeshkan-tutorial
注意:此教程已在 Python 3.6、3.7 和 3.8 上进行了测试。
安装后,您可以通过命令行调用以开始教程
$ meeshkan-tutorial
运行此命令后,您应该会看到
__ __
____ ___ ___ ___ _____/ /_ / /______ _____
/ __ `__ \/ _ \/ _ \/ ___/ __ \/ //_/ __ `/ __ \
/ / / / / / __/ __(__ ) / / / ,< / /_/ / / / /
/_/ /_/ /_/\___/\___/____/_/ /_/_/|_|\__,_/_/ /_/
The tutorial!!
Press ENTER to continue...
如果没有,可能是我们的问题。请通过 在 meeshkan-tutorial 仓库中提交问题 告诉我们。
收集API流量的记录
让我们看看如何构建 Meeshkan 规范。首先,您必须 收集 服务器流量和/或 OpenAPI 服务器规范的记录。
要记录 API 流量,Meeshkan CLI 提供了一个 record
模式,它使用代理捕获 API 流量。
$ meeshkan record
此命令以默认端口 8000
作为反向代理启动 Meeshkan,并创建两个目录:logs
和 specs
。
例如,使用 curl,您可以将 Meeshkan 作为代理使用如下
$ curl https://:8000/http://api.example.com
默认情况下,记录代理将路径视为目标 URL。然后,将包含所有服务器流量日志的 .jsonl
文件写入 logs
目录。所有日志都以 http-types
格式创建。这是因为 Meeshkan 的 build
工具期望所有记录都以包含 http-types
格式记录的 .jsonl
文件表示。
有关记录的更多信息,包括直接文件写入和 Kafka 流,请参阅 记录文档。
从记录中构建Meeshkan规范
使用 Meeshkan CLI,您可以从单个 .jsonl
文件构建 OpenAPI 架构,以及描述您服务工作的任何现有 OpenAPI 规范。
$ meeshkan build --input-file path/to/recordings.jsonl
注意:输入文件应为 JSON Lines 格式,且每行应使用 http-types JSON 格式。有关示例输入文件,请参阅 recordings.jsonl。
可选地,您还可以使用 --out
标志后跟此目录的路径来指定输出目录。默认情况下,Meeshkan 将在 specs
目录中构建新的 OpenAPI 规范。
使用短横线(--input-file -
)从标准输入读取
$ meeshkan build --input-file - < recordings.jsonl
构建模式
您可以使用模式标志来指示如何构建 OpenAPI 规范,例如
meeshkan build --input-file path/to/recordings.jsonl --mode gen
支持的模式是
- gen [默认] - 从记录的数据中推断架构
- replay - 基于精确匹配重放记录的数据
有关构建的更多信息,包括混合两种模式以及编辑创建的 OpenAPI 架构,请参阅 构建文档。
使用 Meeshkan 规范模拟服务器流量
您可以使用 OpenAPI 规范,如使用 meeshkan build
创建的规范,使用 Meeshkan 创建 模拟 服务器。
$ meeshkan mock path/to/dir/
注意:您可以指定OpenAPI规范所在的目录路径或指定一个特定文件的路径。
有关模拟的更多信息,包括添加自定义中间件和通过管理API修改模拟模式JIT,请参阅模拟文档。
开发
以下是一些从源代码构建和运行Meeshkan的有用提示。
如果在运行过程中遇到任何问题,请通过Gitter联系我们团队。
入门
- 克隆此存储库:
git clone https://github.com/meeshkan/meeshkan
- 创建虚拟环境:
virtualenv .venv && source .venv/bin/activate
- 安装依赖项:
pip install --upgrade -e '.[dev]'
测试
运行所有检查
$ python setup.py test
pytest
使用pytest
运行tests/
:tests/
pytest
# or
python setup.py test
pytest的配置在pytest.ini中。
格式化
上述python setup.py test
命令用于检查格式化。
要修复格式化
$ python setup.py format
flake8
运行风格检查
$ flake8 .
pyright
您可以通过全局安装pyright来运行类型检查
$ npm -i -g pyright
然后运行
$ pyright --lib
$ # or
$ python setup.py typecheck
推荐使用Pyright扩展在VS Code中进行开发。
自动构建
CircleCI构建管道的配置可以在.circleci/config.yml中找到。
将 Meeshkan 发布为 PyPi 包
要将Meeshkan作为PyPi包发布,请完成以下步骤
- 如果版本与已发布的包相同,请在setup.py中提升版本。提交并推送。
- 运行
python setup.py test
以检查一切是否正常工作 - 要构建和上传包,请运行
python setup.py upload
。插入PyPI凭证以将包上传到PyPI
。该命令还将运行git tag
以标记提交为发布版本并将标签推送到远程。
要查看不同命令的作用,请参阅setup.py中的
Command
类。
贡献
感谢您对贡献的兴趣!请查看我们的开发指南,了解如何在本地开发包。开始贡献的一个好方法是提交问题或发起拉取请求。
行为准则
请注意,该项目受Meeshkan社区行为准则的约束。通过参与,您同意遵守其条款。
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪一个,请了解有关 安装包 的更多信息。