← ClaudeAtlas

api-mockinglisted

【API Mock】设计和实现 API Mock 服务,支持前后端并行开发、测试环境模拟、延迟/错误注入。 触发时机: - 用户要求"Mock API"、"模拟接口" - 后端接口未就绪,前端需要开发 - 测试需要模拟各种响应场景 支持 Mock Server 搭建和代码级 Mock。
afine907/skills · ★ 0 · AI & Automation · score 75
Install: claude install-skill afine907/skills
# API Mock — API Mock 技能 设计 Mock 服务,支持前后端并行开发和测试场景模拟。 ## Goal 设计和实现 API Mock 服务,支持前后端并行开发、测试环境模拟、延迟/错误注入 ## Trigger - 用户要求"Mock API"、"模拟接口" - 后端接口未就绪,前端需要开发 - 测试需要模拟各种响应场景 ## Mock 方案对比 | 方案 | 适用场景 | 优势 | 劣势 | |------|----------|------|------| | Mock Server | 前端独立开发 | 真实 HTTP 请求 | 需要维护服务 | | 代码级 Mock | 单元测试 | 灵活、快速 | 不测试网络层 | | API 网关 Mock | 微服务开发 | 无需改代码 | 配置复杂 | | 录制回放 | 回归测试 | 真实数据 | 数据可能过期 | ## Mock Server 实现 ### Python + FastAPI ```python from fastapi import FastAPI, HTTPException from pydantic import BaseModel from typing import Optional, List import random import time app = FastAPI(title="Mock Server") # Mock 数据 USERS_DB = [ {"id": "1", "name": "张三", "email": "zhangsan@example.com"}, {"id": "2", "name": "李四", "email": "lisi@example.com"}, {"id": "3", "name": "王五", "email": "wangwu@example.com"}, ] # 配置 MOCK_DELAY = 0.1 # 模拟延迟 ERROR_RATE = 0.05 # 错误率 @app.middleware("http") async def mock_delay(request, call_next): """模拟网络延迟""" await asyncio.sleep(MOCK_DELAY + random.uniform(0, 0.05)) # 随机错误注入 if random.random() < ERROR_RATE: return JSONResponse( status_code=500, content={"error": "Internal Server Error"} ) return await call_next(request) @app.get("/api/v1/users") async def list_users(page: int = 1, page_size: int = 10): """获取用户列表""" start = (page - 1) * page_size end = start + page_size