跳转到主要内容

以风格化的方式逆向工程服务

项目描述

Meeshkan

CircleCI PyPI Code style: black License: MIT

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 的基本流程是 收集、构建和模拟。

  1. 首先,收集 记录的服务器流量和/或 OpenAPI 规范。
  2. 然后,构建 一个统一这些各种数据源的架构。
  3. 最后,使用此架构创建 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,并创建两个目录:logsspecs

例如,使用 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联系我们团队

入门

  1. 克隆此存储库:git clone https://github.com/meeshkan/meeshkan
  2. 创建虚拟环境:virtualenv .venv && source .venv/bin/activate
  3. 安装依赖项: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包发布,请完成以下步骤

  1. 如果版本与已发布的相同,请在setup.py中提升版本。提交并推送。
  2. 运行python setup.py test以检查一切是否正常工作
  3. 要构建和上传包,请运行python setup.py upload。插入PyPI凭证以将包上传到PyPI。该命令还将运行git tag以标记提交为发布版本并将标签推送到远程。

要查看不同命令的作用,请参阅setup.py中的Command类。

贡献

感谢您对贡献的兴趣!请查看我们的开发指南,了解如何在本地开发包。开始贡献的一个好方法是提交问题发起拉取请求

行为准则

请注意,该项目受Meeshkan社区行为准则的约束。通过参与,您同意遵守其条款。

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪一个,请了解有关 安装包 的更多信息。

源分发

meeshkan-0.2.25.tar.gz (62.8 kB 查看哈希值)

上传时间

构建分发

meeshkan-0.2.25-py2.py3-none-any.whl (81.5 kB 查看哈希值)

上传时间 Python 2 Python 3

由...

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面