har2pytest
从 HAR 抓包文件和 Swagger 文档生成 Python API 接口文件,并自动生成 pytest + allure 参数化测试用例的 CLI 工具。
安装
pip install har2pytest
验证安装:
har2pytest --help
快速开始
1. 从 HAR 文件生成 API 文件
# 生成 API 文件(同步/异步统一,运行时自动适配)
har2pytest api api_request.har
2. 从 Swagger 文档生成 API 文件
har2pytest swagger https://petstore.swagger.io/v2/api-docs
3. 生成测试用例
命令格式:
har2pytest testcase [har_file] --pattern <模式> [options]
参数说明:
| 参数 | 缩写 | 默认值 | 说明 |
|---|---|---|---|
har_file |
- | api_request.har |
HAR 文件路径(位置参数,可省略) |
--pattern |
- | list_query |
生成模式:list_query / complex_scenario / batch |
--url |
-u |
- | 目标接口 URL,指定后只生成该接口的测试用例 |
--mark |
-m |
- | pytest 标记(如 test_4291),生成 @pytest.mark.test_4291 |
--output |
-o |
testcases |
测试用例输出目录 |
--api-dir |
- | apis |
API 文件目录(用于匹配 API 文件) |
--api-files |
- | api_request.har |
batch 模式专用:API 文件目录或 HAR 文件,多个用逗号分隔 |
--overwrite |
- | False |
强制覆盖已存在的测试用例文件 |
--async |
- | False |
生成异步模式代码(async/await + async_client) |
示例:
# 查询类参数化测试(指定 URL)
har2pytest testcase api_request.har --pattern list_query --url /api/user/list
# 查询类参数化测试(全参数),生成异步测试用例
har2pytest testcase api_request.har \
--pattern list_query \
--url /api/user/list \
--mark test_4291 \
--output testcases/async \
--api-dir apis \
--overwrite \
--async
# 复杂场景流程测试(多步骤业务流),生成同步测试用例
har2pytest testcase api_request.har \
--pattern complex_scenario \
--url /api/order/create \
--mark test_5012 \
--output testcases/sync \
--api-dir apis \
--overwrite
# 批量生成(指定 API 文件目录,无 HAR 文件)
har2pytest testcase \
--pattern batch \
--api-files apis/mall_store_application \
--output testcases/sync \
--api-dir apis \
--overwrite
# 批量生成(指定 HAR 文件,自动提取接口并匹配 API 文件)
har2pytest testcase \
--pattern batch \
--api-files api_request.har \
--output testcases/sync \
--api-dir apis
# 批量生成(多个 API 文件目录,用逗号分隔)
har2pytest testcase \
--pattern batch \
--api-files apis/mall_store_application,apis/mall_center_member \
--output testcases/sync \
--overwrite
# 异步模式测试用例(生成 async/await 代码,自动切换为 async_client)
har2pytest testcase api_request.har \
--pattern list_query \
--url /api/user/list \
--output testcases/async \
--async \
--overwrite
4. 查看 HAR 文件摘要
har2pytest summary api_request.har
详细文档
| 文档 | 说明 |
|---|---|
| API 文件生成 | 从 HAR / Swagger 生成 API 文件的详细说明 |
| HAR 文件解析 | HAR 解析规则与参数过滤 |
| Swagger 文档解析 | Swagger 文档获取与参数提取 |
| 测试用例生成模式 | list_query / complex_scenario / batch 三种模式详解 |
配置
在项目根目录创建 har2pytest_config.json 自定义配置。配置项详见 APIConfig 类(config.py)。
项目结构
har2pytest/
├── har2pytest/ # 核心代码
│ ├── __init__.py
│ ├── __main__.py # CLI 入口
│ ├── client.py # HTTP 客户端 (Client, AsyncClient)
│ ├── config.py # 配置管理 (APIConfig)
│ ├── har_parser.py # HAR 文件解析 (HARParser)
│ ├── har_generator.py # HAR → API 文件生成
│ ├── api_generator.py # API 文件生成 (APIGenerator)
│ ├── swagger_handler.py # Swagger 文档处理 (SwaggerHandler)
│ ├── testcase_generator.py # 测试用例生成 (TestCaseGenerator)
│ ├── url_matcher.py # URL 规范化与匹配 (URLMatcher)
│ ├── utils.py # 工具函数
│ └── logger.py # 日志配置
├── docs/ # 详细文档
├── tests/ # 单元测试
│ └── har2pytest_config_test.json # 测试配置示例
├── pyproject.toml # 项目配置
└── mkdocs.yml # 文档站点配置
Metadata
Release files for har2pytest 1.5.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| har2pytest-1.5.1.tar.gz | 106.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| har2pytest-1.5.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 166.2 kB
Release files / har2pytest-1.5.1.tar.gz
| Download URL | har2pytest-1.5.1.tar.gz |
|---|---|
| Size | 106.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
65b5b93867cdec260b778ccbb6ea21f930552bac3aa6eaa0663fc2b954ff1a00
|
|
BLAKE2b-256 checksum How to use checksums |
369bcfeb32474287c58cd2d6a21cc071a372a1f4c43c3e11be138464a26ff1ad
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.
Transparency logRelease files / har2pytest-1.5.1-py3-none-any.whl
| Download URL | har2pytest-1.5.1-py3-none-any.whl |
|---|---|
| Size | 60.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1c1c64639ad9e64a6dd0ea52f33585fddf923f57b754df6bea73231e531c5d6e
|
|
BLAKE2b-256 checksum How to use checksums |
d4b80faaa3b636f757d21e18afbd104ae3a80b6fe50c3d230c78ff8c68cf52cb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.
Transparency log