Skip to main content

JSON-driven OpenAPI integration test CLI (TUI + suites)

Project description

XSIAM Credential / apitest

环境准备

方式 A:从 PyPI / 内网 PyPI 运行(推荐分发)

PyPI 包名与命令均为 fapitestuvx fapitest 即可;公网 apitest 为其他项目,勿混用)。

需已安装 uv

uvx fapitest --user-data init
uvx fapitest --user-data
uvx fapitest --user-data run --suite demo-ui --group readonly --env httpbin

# 内网 PyPI(示例)
# uvx --index-url https://pypi.your-company.com/simple/ fapitest --user-data init

持久安装:

uv tool install fapitest
fapitest --user-data init
fapitest --user-data

发布流程见 docs/publishing-pypi.md

方式 A′:uvx --from 本地或 Git(未上 PyPI 时)

uvx --from "C:/Programs/dbapp-workspace/apitest-standalone" apitest --user-data init
uvx --from "C:/Programs/dbapp-workspace/apitest-standalone" apitest --user-data

说明:

  • uvx 会临时安装到 uv 缓存,不污染当前目录;
  • 包内已内置 suite 模板;init --user-data 写入 ~/.apitest/
  • init 且存在 ~/.apitest/suites 时,可省略每次的 --user-data
  • 已 clone 的仓库根目录内开发时,默认使用仓库下的 suites/

方式 B:仓库内开发(仅 uv)

uv venv --python 3.12
.\.venv\Scripts\Activate.ps1
uv pip install -e .
uv pip install "pytest>=8.0.0" "responses>=0.25.0"

.env 示例(勿提交仓库):

HENGNAO_APPKEY=your_key
HENGNAO_APPSECRET=your_secret

apitest(推荐)

JSON 配置驱动的 OpenAPI 联调框架。日常在仓库内用 uv run fapitest;任意目录用 uvx fapitest(见上文方式 A)。

常用命令

# 交互 TUI(Textual):方向键选组/用例,快捷键见下
uv run apitest

|  | 作用 |
|----|------|
| `g` | 跑当前组 |
| `c` | 跑当前用例 |
| `a` | 跑全部组 |
| `e` | **选择环境**列表点选Enter 确认 |
| `n` | 下一环境顺序轮换 |
| `s` / `b` | **返回 Suite 选择**多个 suite Esc 取消并回到当前 suite |
| `q` | 退出也可点底部 Footer  Quit |

日志区使用 RichLog 彩色输出跑完用例后会输出报告路径与 `file:///.../report.html` 链接

启动时若存在多个 suite `demo-ui``xsiam-credential`),会先弹出 Suite 列表进入主界面后按 **`s`** 可退回 Suite 选择页重新选择Esc 取消)。

# 只读冒烟
uv run apitest run --suite xsiam-credential --group readonly --env dev

# 写组(含 create-then-delete flow)
uv run apitest run --suite xsiam-credential --group write --env dev

# 全量(所有 group)
uv run apitest run --suite xsiam-credential --all --env dev

报告目录:reports/{suite}/{timestamp}/(已 gitignore)。

报告文件:

  • report.html:主报告(可直接浏览器打开)
  • summary.json:机器可读摘要
  • index.json:索引(含 reportHtml 指针)
  • failures/{caseId}.json:失败或 --verbose 详情(脱敏)
  • summary.md:仅兼容模式(legacy_md=True)生成

非 TUI/菜单模式会同时打印:

  • Report: <本地路径>
  • Report URL: file:///.../report.html(多数终端可点击)

可选 data root 切换:

# 使用用户空间 ~/.apitest
uv run apitest --user-data

# 指定自定义 data root
uv run apitest --data-dir "D:/apitest-data" run --suite xsiam-credential --all --env dev

默认 data root 为仓库根目录(suites/plugins/.env 所在目录)。

新增接口(检查清单)

  1. suites/xsiam-credential/payloads/ 增加请求体或 query JSON
  2. suites/xsiam-credential/cases/ 增加 case(或 flow 步骤)
  3. groups/readonly/group.jsongroups/write/group.json 引用该 case
  4. uv run pytest -q

Agent 配置用例:.cursor/skills/apitest-test-data/SKILL.md(流程)+ reference.md(字段/示例)。

表单上传:bodyTypeform-data / form-urlencoded,见设计文档 §3.4.2。

演示 Suite(看 TUI 交互)

无需内网与 HENGNAO_* 密钥,走公网 httpbin.org

uv run apitest
# 启动后若有两个 suite,选 demo-ui
说明
readonly GET 连通、Query、2s 延迟
write POST JSON、form-urlencoded
flows POST → extract → GET 变量传递

环境:demo-uihttpbin / httpbin-delay / playground / sandbox。TUI 内按 e 弹出列表选择;按 n 可顺序切换到下一环境。

目录

core/              # 框架内核
suites/demo-ui/    # TUI 演示(httpbin)
suites/xsiam-credential/
  suite.json
  groups/readonly|write/group.json
  cases/
  payloads/
plugins/           # 项目级自定义 auth_*.py(可选)
reports/           # 执行产物

测试

uv run pytest -q

安全说明

  • 日志与报告会对 accessTokenrefreshTokenclientSecretappSecretsign 脱敏。
  • 勿将 .env 提交到仓库。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fapitest-0.2.2.tar.gz (43.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fapitest-0.2.2-py3-none-any.whl (46.3 kB view details)

Uploaded Python 3

File details

Details for the file fapitest-0.2.2.tar.gz.

File metadata

  • Download URL: fapitest-0.2.2.tar.gz
  • Upload date:
  • Size: 43.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.17

File hashes

Hashes for fapitest-0.2.2.tar.gz
Algorithm Hash digest
SHA256 4a4039bb8b0b2acf747de4804d4d7e3a176063f315adc4fcfe7a7931c73eac59
MD5 4cf8473351ce4aaec99a255aa642d9b7
BLAKE2b-256 afb3e46e2b21b1616a39f79b1dd6f14d3da6765f9cda4b47ee1782766b5c74b1

See more details on using hashes here.

File details

Details for the file fapitest-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: fapitest-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 46.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.17

File hashes

Hashes for fapitest-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2ad85ee18fef566be7506d6502db43281eda049e7d4c37184b033aaf9d42a398
MD5 57a3f5516f0038bcc72145f61c1f0ec7
BLAKE2b-256 ef6bb3d680d1fef7dd516494b19cc65d10d2484cb0661858093fea480cfebe6e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page