FEATURED · 精选文章

cli-anything-wiremock:用命令行与 Agent 全量操控 WireMock 管理 API 的实战指南

发布时间 / 2026/9/10 23:34:53
来源 / 创域科博编辑部
栏目 / 资讯中心
cli-anything-wiremock:用命令行与 Agent 全量操控 WireMock 管理 API 的实战指南 cli-anything-wiremock用命令行与 Agent 全量操控 WireMock 管理 API 的实战指南【免费下载链接】CLI-AnythingCLI-Anything: Making ALL Software Agent-Native -- CLI-Hub: https://clianything.cc/项目地址: https://gitcode.com/GitHub_Trending/cl/CLI-Anything本指南围绕cli-anything-wiremock——CLI-Anything 生态中面向 WireMock 的 Python CLI Harness——展开讲解如何在不手写原始 HTTP 请求的前提下通过终端命令或 Agent 工具调用完成 Stub 映射管理、请求验证、状态化场景、真实流量录制与服务器运维。读完本文你将掌握 WireMock Standalone 的启动、CLI 的安装与连接配置、五大命令组的全部用法以及 JSON 输出模式下与脚本、LLM Agent 无缝对接的机器可读实践方案。为什么需要给 WireMock 套一层 CLIWireMock 是一个灵活的 HTTP 模拟mock服务器广泛用于集成测试环境用可控的模拟响应替换真实的 HTTP 后端。它在/__admin/路径下暴露了一整套 REST Admin API用于管理 Stub、查看请求、控制有状态场景Scenario以及录制来自真实后端的流量。cli-anything-wiremock正是围绕这些 Admin 端点实现的封装层目标非常明确让开发者与 AI Agent 能在终端或脚本里直接控制 WireMock而无需手工拼装原始 HTTP 调用。项目定位可以从 入口 CLI 文件 看到——它基于 Click 构建了stub、request、scenario、record、settings五个命令组加上顶层status、reset、shutdown命令。底层架构从终端命令到 Admin API 的调用链理解 CLI 的内部结构有助于排查问题与二次开发。从源码结构看整个 Harness 分四层入口层wiremock_cli.pyClick 命令定义负责解析全局选项--host、--port、--scheme、--user、--password、--json并把解析结果写入Session构造WireMockClient挂到 Click 上下文中。会话层core/session.pySession.from_env()从环境变量WIREMOCK_HOST/WIREMOCK_PORT/WIREMOCK_SCHEME/WIREMOCK_USER/WIREMOCK_PASSWORD读取连接参数端口解析失败时回退 8080CLI 显式传入的选项优先级更高。客户端层utils/client.pyWireMockClient是一个薄封装base_url()拼接scheme://host:port/__admin提供get/post/put/delete/patch五个方法统一携带 auth 与 30 秒超时is_alive()通过GET /__admin/health探测服务是否在线。业务管理层core/下的StubsManager、RequestsLog、ScenariosManager、RecordingManager、SettingsManager分别对应 WireMock 的/mappings、/requests、/scenarios、/recordings、/settings与/version端点。例如创建 Stub 时stub quick命令在 core/stubs.py 中把METHOD URL STATUS [--body]拼成标准 mapping JSONrequest.method自动大写带 body 时自动附加Content-Type头再调用create()走POST /__admin/mappings。整套调用链完全围绕 WireMock 官方 Admin API 语义设计命令名称与端点一一对应。安装与启动 WireMock安装 CLI在wiremock/agent-harness目录下以可编辑模式安装并确认入口命令可用cd /path/to/agent-harness pip install -e . cli-anything-wiremock --helpsetup.py 中的元数据显示包名为cli-anything-wiremock依赖click8.0、requests2.28、rich13.0rich 用于表格渲染缺失时自动降级为纯文本表格要求 Python 3.10并通过 entry_points 注册控制台命令cli-anything-wiremockcli_anything.wiremock.wiremock_cli:cli。启动 WireMock Standalone默认端口为 8080curl -fsSL https://repo1.maven.org/maven2/org/wiremock/wiremock-standalone/3.3.1/wiremock-standalone-3.3.1.jar \ -o wiremock-standalone.jar java -jar wiremock-standalone.jar --port 8080 --verbose需要持久化 Stub 文件时用--root-dir指定映射目录重启后映射仍然保留java -jar wiremock-standalone.jar \ --port 8080 \ --root-dir ./wiremock-data \ --verbose开启 HTTPS 支持8443 端口同时提供 HTTP 与 HTTPSjava -jar wiremock-standalone.jar \ --port 8443 \ --https-port 8443 \ --verbose也可以使用 Docker 替代docker run -d --name wiremock \ -p 8080:8080 \ wiremock/wiremock:latest启动后即可执行cli-anything-wiremock status验证连通性。连接配置环境变量与 CLI 标志所有连接参数既可以通过环境变量设置也可以通过 CLI 标志传入CLI 标志优先级更高。完整参数对照如下环境变量CLI 标志默认值说明WIREMOCK_HOST--hostlocalhostWireMock 主机名WIREMOCK_PORT--port8080WireMock 端口WIREMOCK_SCHEME--schemehttphttp或httpsWIREMOCK_USER--user无Admin Basic Auth 用户名WIREMOCK_PASSWORD--password无Admin Basic Auth 密码WIREMOCK_JSON--jsonfalseJSON 输出模式连接远程 WireMock 实例示例export WIREMOCK_HOSTwiremock.internal export WIREMOCK_PORT9090 cli-anything-wiremock status如果启用了 HTTPS 或 Basic Auth只需额外设置WIREMOCK_SCHEMEhttps与WIREMOCK_USER/WIREMOCK_PASSWORDutils/client.py 会在每次请求中自动携带 Basic Auth 凭据。命令组总览命令组用途stubStub 映射的增、查、改、删request检查已服务的请求并验证调用scenario管理有状态的状态机场景record将真实后端流量录制为 Stubsettings读取全局设置与服务版本Stub 管理创建、查询、删除、持久化验证服务已运行cli-anything-wiremock status创建简单 Stub# 快速形式METHOD URL STATUS_CODE [--body JSON] cli-anything-wiremock stub quick GET /api/users 200 --body {users:[]} # 完整 JSON 形式可从字符串或 file 读取 cli-anything-wiremock stub create { request: { method: POST, url: /api/orders }, response: { status: 201, body: {\id\:42}, headers: { Content-Type: application/json } } }stub create支持以开头传入文件路径如stub create mapping.json便于把复杂映射存成文件管理。stub quick的--content-type默认application/json可通过该选项覆盖。查询与删除cli-anything-wiremock stub list # 列表支持 --limit / --offset 分页 cli-anything-wiremock stub list --json # 机器可读输出 cli-anything-wiremock stub get stub-id # 按 UUID 查看单个 Stub cli-anything-wiremock stub delete stub-id # 按 UUID 删除在人类可读模式下stub list会通过 utils/output.py 渲染出ID / Name / Method / URL / Status的 ASCII 表格依赖 rich缺失时自动降级。重置、持久化与导入cli-anything-wiremock stub reset # 重置为磁盘上的默认映射 cli-anything-wiremock stub save # 将内存中的 Stub 持久化到磁盘 cli-anything-wiremock stub import ./my-stubs.json # 从 JSON 文件批量导入对应端点分别是POST /__admin/mappings/reset、POST /__admin/mappings/save、POST /__admin/mappings/import与 WireMock 官方语义完全一致。请求验证断言你的调用真的发生了request组用于查看 WireMock 收到的实际请求是契约测试与集成测试断言的关键工具# 列出最近服务过的请求 cli-anything-wiremock request list cli-anything-wiremock request list --limit 10 # 按模式查找请求 cli-anything-wiremock request find {method: GET, url: /api/users} # 统计匹配请求数适合做断言 cli-anything-wiremock request count {method: POST, urlPath: /api/orders} # 列出未匹配任何 Stub 的请求即 404 cli-anything-wiremock request unmatched # 清空请求日志 cli-anything-wiremock request resetrequest count在人类可读模式下直接打印Count: N在脚本中断言N 期望值非常顺手。底层实现见 core/requests_log.pylist走GET /__admin/requestsfind/count分别走POST /__admin/requests/find与POST /__admin/requests/countunmatched走GET /__admin/requests/unmatchedreset则用DELETE /__admin/requests。有状态场景Scenario模拟多步工作流WireMock 通过 Scenario 支持状态机可模拟登录、订单流转等多步骤流程。同一个 URL 在不同状态下可以返回不同响应。# 列出所有场景及其当前状态 cli-anything-wiremock scenario list # 将指定场景设置到某个状态 cli-anything-wiremock scenario set login-flow logged-in # 将所有场景重置为初始状态 cli-anything-wiremock scenario reset从 core/scenarios.py 可以看到实现细节set_state使用urllib.parse.quote对场景名做 URL 编码后调用PUT /__admin/scenarios/{name}/state因此包含特殊字符的场景名也能安全处理。录制真实后端流量自动生成 Stub录制功能可以把你对真实后端的访问自动转成 Stub非常适合快速搭建测试环境# 开始录制——将流量代理到真实后端 cli-anything-wiremock record start https://api.example.com # ... 向 http://localhost:8080 发请求它们会被代理并捕获 ... # 停止录制并查看捕获到的 Stub cli-anything-wiremock record stop # 检查当前是否在录制 cli-anything-wiremock record status # 将内存中的请求快照为 Stub cli-anything-wiremock record snapshotrecord start支持通过可重复的--match-header选项捕获指定请求头例如--match-header Authorization。底层实现见 core/recording.pystart构造{targetBaseUrl: target_url, captureHeaders: {...}}请求体调用POST /__admin/recordings/startcaptureHeaders 中的每个头都会以{caseInsensitive: True}配置保证大小写不敏感匹配。服务端管理设置、重置与关机# 查看 WireMock 版本 cli-anything-wiremock settings version # 获取全局设置 cli-anything-wiremock settings get # 完全重置Stub 请求 场景 cli-anything-wiremock reset # 关闭服务 cli-anything-wiremock shutdown两点值得注意settings version走GET /__admin/version返回服务端真实版本号可用于版本兼容性检查shutdown命令带有确认提示Shutdown the WireMock server?且入口 CLI 文件中对ConnectionError做了专门处理——因为服务端成功关闭时会直接断开连接这是预期行为CLI 会友好地提示“Shutdown signal sent (server connection closed)”而不是报错。JSON 输出模式面向脚本与 Agent 的机器可读接口所有命令都支持--json全局标志等价于设置WIREMOCK_JSONtrue环境变量输出标准 JSON 供脚本解析或 Agent 工具调用cli-anything-wiremock --json stub list cli-anything-wiremock --json request count {method:GET,url:/health}JSON 输出按命令类型区分数据类命令直接透传 WireMock Admin API 的原始 JSON。例如stub list返回{mappings: [...], total: N}无返回值操作delete、reset、save 等返回{status: ok}status命令返回{status: running|stopped, host: ..., port: N}错误情况返回{status: error, message: ...}人类可读模式下错误信息打印到 stderr 并退出码为 1见 utils/output.py。这一设计让 CLI 既可以给人看也可以直接喂给 Agent 与自动化流水线。项目还在 skills/SKILL.md 中提供了技能清单按命令组逐条列出子命令语义方便把整套操作注入 Agent 的技能上下文。测试保障与可靠性仓库在 tests/test_core.py 中提供了不依赖真实服务器的单元测试——所有测试用unittest.mock拦截 HTTP 调用验证WireMockClient的 URL 拼接如https://testhost:9090/__admin、auth 与 timeout 透传、HTTP 方法映射等关键行为同时还有 tests/test_full_e2e.py 用于端到端验证。这意味着你可以安全地修改或扩展现有代码并用既有测试回归保障。典型实战流程串联把上述能力串成一个典型场景启动 WireMock → 用stub quick快速搭建接口 → 通过record start对真实后端录制复杂接口 →stub import批量加载团队共享的映射文件 → 跑完测试后用request count断言关键调用 → 最后用request reset与stub reset清理环境。整个过程无需接触任何原始 HTTP 请求即可完成对 WireMock 的完整、可审计、可脚本化的管理闭环。【免费下载链接】CLI-AnythingCLI-Anything: Making ALL Software Agent-Native -- CLI-Hub: https://clianything.cc/项目地址: https://gitcode.com/GitHub_Trending/cl/CLI-Anything创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻