Api Mocking

作者 postmanlabs67cff8f385d8无许可证收录于 2026年10月8日更新于 2026年10月8日

Stands up a fake backend that behaves like a real API — from a collection or an OpenAPI spec, running locally or pushed to Postman's cloud for a durable URL — plus request-time scenario and status-code overrides for testing failure paths. Use when the user asks to "mock this API," "create a mock server," "fake the backend," "run tests without hitting the real API," or "simulate an error/out-of-stock response." Covers `postman mock`. Depends on bootstrap for the workspace id only once a mock is pushed to the cloud (`-w`, or the workspace linked in `.postman/resources.yaml`) — generating and running a mock locally needs nothing from bootstrap.

AI 生成的概览

在本地或云端创建并运行模拟 API 后端,支持场景与状态码覆盖以便测试。

功能
该技能指导智能体根据集合或 OpenAPI 规范,或使用内置示例,生成模拟 API 后端,产出 config.yaml 和一个 Node HTTP 服务器文件。内容涵盖本地运行模拟服务、通过请求头选择场景或状态码进行调用、推送到 Postman 云端、部署持久 URL、查看调用日志以及删除。它还说明了三个不同标识符的区别以及云端命令的认证限制。
适用场景
当用户要求模拟某个 API、创建模拟服务器、伪造后端、在不访问真实 API 的情况下运行测试,或模拟错误与缺货响应时使用。适用于测试失败路径,以及为同事或 CI 任务提供可通过网络访问的模拟端点。
运行要求
需要带有 postman mock 命令的 Postman CLI,以及用于运行所生成模拟服务的 Node 运行时。云端推送、部署和日志操作需要 postman login 或 API 密钥,部署还需要工作区和团队域名。该技能不附带脚本,仅为说明文档。

API Mocking

Overview

A mock is two files on disk: config.yaml (name, port, list of scenarios) and default.js — a plain Node HTTP server, and the mock itself, not a wrapper around one. Because it's just code, generating, inspecting, running, and calling a mock are all local and work for a logged-out guest. Only sharing it — pushing it to the cloud and deploying a durable URL — needs postman login.

Local and cloud aren't a choice made once at generate time. Every mock starts as a local folder; mock push promotes any existing local folder to the cloud later, whether or not -w was passed at generate. Reach for cloud only when something other than you needs to hit this mock over the network — a teammate, a CI job elsewhere, a webhook sender. A purely local mock answering a postman request on your machine never needs it.

Process

  1. Generate. postman mock generate -n NAME --port N with no source scaffolds a complete sample cart mock — the fastest way to a server that already answers, useful whenever the point is exercising mock behavior rather than a specific API's shape. Pass a real source — postman mock generate SOURCE -n NAME --port N, where SOURCE is a collection folder or an openapi.yaml — when the endpoints need to mirror an actual API. Either form writes config.yaml + default.js into postman/mocks/NAME/. Adding -w <workspaceId> also creates the mock in that workspace on top of writing the local files — it doesn't replace the local write, and it requires being logged in.
  2. Run it. postman mock run ./postman/mocks/NAME starts Mock server started at http://localhost:PORT. If the port in config.yaml is taken and --port wasn't passed explicitly, it falls back to a free OS-assigned port instead of erroring — read the real port off that line rather than assuming the configured one. Naming --port explicitly makes a taken port a hard Port already in use error instead.
  3. Call it. Plain postman request localhost:PORT/route returns the default scenario's response. Two headers change that per-request, with no restart needed: x-mock-scenario: <name> selects a different scenario (the valid names live in config.yaml — mock get only ever shows the default one), and x-mock-response-code: <code> returns that status instead. A wrong route and a wrong scenario name both come back as Endpoint not defined — indistinguishable from the message alone. There's no hot reload: a default.js edit does nothing until you Ctrl+C the running server and mock run it again.
  4. Push it, if it needs to leave your machine. postman mock push ./postman/mocks/NAME is safe to re-run — Created the first time, Updated after. It returns a cloud ID that is a new identifier, not the id already sitting in config.yaml — see The three identifiers below. It also modifies .postman/resources.yaml; commit that change.
  5. Deploy it, for a URL that outlives your terminal. postman mock deploy CLOUD_ID -s SLUG -y --auto-deploy prints https://SLUG.mock.<team-domain>.postman.dev. Deployed private by default — callers need an API key — add --public only when the mock should be reachable by anyone with the URL. -y alone accepts private/auto-deploy-off; without --auto-deploy, a later push doesn't change what's actually being served until you deploy again.
  6. See who's calling it. postman mock get CLOUD_ID --json returns .mockServerId; feed that into postman mock log MOCK_SERVER_ID --json for call entries. An empty log means the URL genuinely hasn't been hit — a rejected caller still shows up, recorded with its failing status code.
  7. Tear down. postman mock delete ./path --yes (local) or postman mock delete CLOUD_ID --yes (cloud) — both refuse while the thing is still alive, so stop the local run or bring the deployment down first. Cloud delete doesn't touch .postman/resources.yaml; drop that line by hand afterward or the repo keeps claiming a mock that's gone.

To point real request/assertion runs at a mock instead of hand-editing base-URL variables, see the api-testing skill's --use-mock/--mock flags on collection run.

The three identifiers

config.yaml's local id, the cloud ID push returns, and the mockServerId from get CLOUD_ID --json are three different values, in the order they become available. Only the second and third are lookups — push is a creation, not a promotion, so passing the config.yaml id to any cloud command is passing the wrong key, not a stale one.

Critical Rules

  1. Every gated cloud command fails the same way: Authentication required. Run postman login or provide --api-key, exit 1, nothing half-done. Whether a command is gated is decided by what you pass it, not the verb — mock get/mock run take either a local path (ungated) or a cloud ID (gated); mock list is gated only when called with no path.
  2. push is what moves an existing local mock to the cloud — -w at generate time is optional, not a fork you must choose up front. A mock built as a guest can be pushed and deployed later with no rework.
  3. --public on deploy is the one action here with real exposure — it stands up a server anyone with the URL can hit, with no API key. The default (private) is the safe one; confirm intent before adding it.
  4. Don't reuse the config.yaml id for a cloud command, and don't invent a mock generate flag for regenerating in place. The reference for this CLI documents editing default.js and restarting as the way to change a running mock's behavior — no in-place "update from source" verb is documented. Run postman mock generate -h before assuming one exists rather than guessing a flag name.
  5. -w/--workspace only exists on generate, list, push, and deploy. get, run, log, and delete already take a path or an id that says where the mock is — there's nothing left for -w to resolve on those.

Verification

A mock isn't done because generate or run exited 0 — hit it with postman request and check the actual status/body, or mock get CLOUD_ID --json for a cloud one, then state whether it ended up local or cloud, and (if deployed) private or public. For a scenario/status-code check, confirm the header actually changed the response — a typo'd scenario name returns the same Endpoint not defined as a wrong route, so a passing exit code alone proves nothing.

来源与署名

来源:postmanlabs/postman-plugin位于skills/api-mocking提交67cff8f

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架

更多来自 postmanlabs/postman-plugin 的技能

Performance Testing

postmanlabs

使用虚拟用户、负载配置和通过/失败阈值运行 Postman 集合负载测试。

Software Development2026年10月8日

Flows

postmanlabs

通过命令行操作 Postman Flows:列出、运行、触发、部署、更新并调试流程及其运行记录。

DevOps & Cloud2026年10月8日

Ci Integration

postmanlabs

将 Postman CLI 检查作为独立的通过/失败门禁加入 CI 流水线。

DevOps & Cloud2026年10月8日

Api Testing

postmanlabs

Runs tests against an API from the command line — a single ad-hoc request, a full collection of pm.test assertions, or matching real captured app traffic against a collection contract. Use when the user asks to "test this endpoint," "run this collection," "check the API still works," or "verify my app's requests match the contract." Covers `postman request`, `postman collection run`, and `postman application test`. Depends on bootstrap when the target is a cloud collection or workspace-bound environment; a bare URL or local collection needs nothing from bootstrap.

待分类2026年10月8日

Api Monitoring

postmanlabs

Creates, schedules, and manages Postman Monitors — recurring checks against a live API — triggers ad hoc runs, inspects job/run history to diagnose failures, and hosts self-hosted execution runners for monitors on a private network. Use when the user asks to "set up a monitor," "run this monitor now," "check monitor results," "pause/resume a monitor," or "set up a runner for our internal APIs." Covers `postman monitor` (create, update, delete, list, get, pause, resume, run, jobs, runs) and `postman runner` (start, list, regions).

待分类2026年10月8日

Api Engineer

postmanlabs

指导 API 工程工作,涵盖契约设计、实现、模拟、测试、文档与部署。

Software Development2026年10月8日