Apifox 帮助文档
帮助文档常见问题Apifox 官网私有化部署
开发者中心
  • 开放 API
  • 更新日志
  • Road Map
  • Apifox Markdown
下载
  • 下载 Apifox
  • 下载 IDEA 插件
  • 下载浏览器扩展
  • Apifox Web 版
帮助文档常见问题Apifox 官网私有化部署
开发者中心
  • 开放 API
  • 更新日志
  • Road Map
  • Apifox Markdown
下载
  • 下载 Apifox
  • 下载 IDEA 插件
  • 下载浏览器扩展
  • Apifox Web 版
  1. Mock 数据
  • 帮助中心
  • 更新日志
  • 入门
    • 产品介绍
    • 联系我们
    • 私有化部署
  • 开始使用
    • 下载 Apifox
    • 注册与登录
    • 页面布局
    • 基本概念
    • 快速上手
      • 概述
      • 新建接口
      • 发送接口请求
      • 快捷请求
      • 添加断言
      • 新建测试场景
      • 分享 API 文档
      • 了解更多
    • 基础知识
      • 接口基本信息
        • 请求 URL 与方法
        • 请求参数与请求体
        • 请求头
        • 请求参数编码解码
        • HTTP/2
      • 认证与授权
        • 概述
        • 支持的授权类型
        • Digest Auth
        • OAuth 1.0
        • OAuth 2.0
        • Hawk Authentication
        • Kerberos
        • NTLM
        • Akamai EdgeGrid
        • CA 和客户端证书
      • 响应与 Cookie
        • 概述
        • API 响应
        • 创建和发送 Cookie
        • 实际请求
        • 提取响应示例
      • 请求代理
        • 网页端中的请求代理
        • 分享文档中的请求代理
        • 客户端中的请求代理
      • API Hub
        • API Hub
    • 导入导出数据
      • 概述
      • 手动导入
      • 定时导入
      • 导入设置
      • 导出数据
      • 其它方式导入
        • 导入 OpenAPI/Swagger
        • 导入 Postman
        • 导入 Apipost
        • 导入 Eolink
        • 导入 cURL
        • 导入 Markdown
        • 导入 Insomnia
        • 导入 apiDoc
        • 导入 .har 文件
        • 导入 knife4j
        • 导入 NEI
        • 导入小幺鸡(docway)
        • 导入 Apizza
        • 导入 WSDL
  • 设计 API
    • 概述
    • 新建 API 项目
    • 接口基础知识
    • 请求体多示例配置
    • 响应组件
    • 常用字段
    • 全局参数
    • 历史记录
    • 批量管理
    • 数据模型
      • 概述
      • 新建数据模型
      • 通过 JSON 等生成
      • 高级数据类型
      • 构建数据模型
    • 鉴权组件
      • 概述
      • 创建鉴权组件
      • 使用鉴权组件
      • 在线文档中的鉴权组件
    • 高级功能
      • 接口字段
      • 接口状态
      • 关联测试场景
      • 参数列表外观
      • 接口唯一标识
  • 开发和调试 API
    • 概述
    • 生成请求
    • 发送请求
    • 请求历史
    • 接口用例
    • 动态值
    • 校验响应
    • 文档模式/调试模式
    • 生成代码
    • 环境和变量
      • 概述
      • 全局/环境/临时变量
      • 环境与服务
      • Vault Secrets(密钥库)
        • 功能简介
    • 前后置操作&脚本
      • 概述
      • 断言
      • 提取变量
      • 等待时间
      • 数据库操作
        • 概述
        • MongoDB
        • Redis
        • Oracle
      • 使用脚本
        • 概述
        • 前置脚本
        • 后置脚本
        • 公共脚本
        • pm 脚本 API
        • 使用 JS 类库
        • 响应数据可视化
        • 调用外部程序
      • 脚本示例
        • 断言示例
        • 脚本使用变量
        • 脚本读取/修改接口请求信息
      • 常见问题
        • 如何获取动态参数的真实值并加密?
        • 脚本运行后,提取的数字(bigint)精度丢失应该如何处理?
    • API 调试
      • GraphQL 调试
      • WebSocket 调试
      • Socket.IO 调试
      • SSE 调试
      • SOAP/WebService
      • gRPC 调试
      • 使用请求代理调试
      • Dubbo 调试
        • 新建 Dubbo 接口
        • 调试 Dubbo 接口
        • Dubbo 接口文档
      • TCP(Socket)
        • Socket 接口功能简介
        • 报文数据处理器
  • Mock 数据
    • 概述
    • 智能 Mock
    • 自定义 Mock
    • Mock 优先级
    • Mock 脚本
    • 云端 Mock
    • 自托管 Runner Mock
  • 自动化测试
    • 概述
    • 编排测试场景
      • 新建测试场景
      • 测试步骤间传递数据
      • 测试流程控制条件
      • 从接口/用例同步数据
      • 跨项目导入接口/用例
      • 导出测试场景数据
    • 运行测试场景
      • 运行测试场景
      • 批量运行测试场景
      • 数据驱动测试
      • 定时任务
      • 管理其它项目接口的运行环境
    • 测试报告
      • 测试报告
    • API 测试
      • 集成测试
      • 性能测试
      • 端到端测试
      • 回归测试
    • Apifox CLI
      • 概述
      • 安装和运行 CLI
      • CLI 命令选项
    • CI/CD
      • 概述
      • 与 Jenkins 集成
      • 与 Gitlab 集成
      • 与 Github Actions 集成
      • 与其它更多 CI/CD 平台集成
  • 发布 API 文档
    • 概述
    • 快捷分享
    • 查看 API 文档
    • 发布文档站
    • 页面布局设置
    • 自定义域名
    • AI 相关特性
    • 高级设置
      • 文档站搜索设置
      • 跨域代理
      • 文档站接入 Google Analytics
      • SEO 设置
      • 文档左侧目录设置
      • 文档可见性设置
      • 在线 URL 链接规范
    • API 版本
      • 创建 API 版本
      • 发布 API 版本
      • 快捷分享 API 版本
      • 功能简介
  • 迭代分支
    • 功能简介
    • 新建迭代分支
    • 在迭代分支中改动 API
    • 在迭代分支中测试 API
    • 合并迭代分支
    • 管理迭代分支
  • 管理中心
    • 入驻清单
      • 了解基本概念
      • 团队入驻
    • 管理团队
      • 团队基本操作
      • 团队成员管理
      • 成员角色与权限设置
      • 团队资源
        • 通用 Runner
        • 请求代理 Agent
        • 团队变量
      • 实时协作
        • 团队协作
    • 管理项目
      • 项目基本操作
      • 项目成员管理
      • 通知设置
        • 功能简介
        • 通知对象
        • 通知事件
      • 项目资源
        • 数据库连接
    • 管理组织
      • 单点登录(SSO)
        • 功能简介
        • 为组织配置单点登录
        • 管理用户账号
        • 将组映射到团队
        • Microsoft Entra ID
      • SCIM 用户管理
        • 功能简介
        • Microsoft Entra ID
      • 组织资源
        • 自托管 Runner
  • IDEA 插件
    • 快速上手
    • 生成接口文档
    • 生成数据模型
    • 配置
      • 全局配置
      • 项目内配置
      • 可配置规则
      • 脚本工具
      • Groovy 本地扩展
    • 进阶配置
      • 注释规范说明
      • 框架支持
    • 常见问题
      • 常见问题
  • 浏览器扩展
    • Chrome
    • Microsoft Edge
  • Apifox MCP Server
    • 概述
    • 通过 MCP 使用 Apifox 项目内的 API 文档
    • 通过 MCP 使用公开发布的 API 文档
    • 通过 MCP 使用 OpenAPI/Swagger文档
  • 最佳实践
    • 概述
    • 接口之间如何传递数据
    • 登录态(Auth)如何处理
    • 接口签名如何处理
    • 如何加密/解密接口数据
    • Jenkins 定时触发任务
    • 如何计算 AI 问答成本
    • 与其他成员共用数据库连接配置
    • 通过 CLI 运行包含云端数据库连接配置的测试场景
    • 通过 Runner 运行包含云端数据库连接配置的测试场景
  • 账号&应用设置
    • 账号设置
    • 语言设置
    • 网络代理
    • 快捷键
    • 数据备份与恢复
    • 更新 Apifox
    • API 访问令牌
  • 身份验证 & Auth 鉴权指南
    • 什么是 API Key
    • 什么是 Bearer Token
    • 什么是 JWT
    • 什么是 Basic Auth
    • 什么是 Digest Auth
    • 什么是 OAuth 1.0
    • 什么是 OAuth 2.0
      • 什么是 OAuth 2.0
      • 授权码授权类型
      • 授权码授权类型,带有 PKCE
      • 隐式授权类型
      • 密码凭证授权类型
      • 客户端凭证授权类型
  • 服务与隐私协议
    • 服务协议
    • 隐私协议
    • 服务等级协议
  • 参考资料
    • API 设计优先理念
    • JSON Schema 介绍
    • JSONPath 介绍
    • XPath 介绍
    • Apifox Markdown 语法
    • CSV 格式规范
    • 正则表达式
    • 安装 Java 环境
    • Runner 运行环境
    • 常见编程语言对应的数据类型
    • Socket 粘包和分包问题
    • 词汇表
    • 目录链接汇总
    • Apifox Swagger 扩展
      • 概述
      • x-apifox-folder
      • x-apifox-status
      • x-apifox-name
      • x-apifox-maintainer
    • Apifox JSON Schema 扩展
      • 概述
      • x-apifox-mock
      • x-apifox-orders
      • x-apifox-enum
    • 动态值表达式
  • 常见问题
  1. Mock 数据

自定义 Mock

Apifox 提供了功能强大的 Mock 功能,让你能够精准控制接口返回响应的 Mock 数据。本文档介绍两种主要的方式来自定义 Mock 数据:
1.
自定义特定字段:控制响应中的特定字段,其他字段则使用智能 Mock。
2.
完整响应自定义:通过 Mock 期望定义整个响应内容(支持指定数据、条件数据和动态 Mock 数据)。

自定义特定字段#

有时,你可能希望为响应中的某些字段定义特定值,同时让 Apifox 自动生成(智能 Mock)其余字段。Apifox 提供了灵活的方式来处理这种情况,下面分别来介绍:

1. 直接输入值#

在接口定义的 Mock 字段中直接指定固定值,Apifox 将始终为该字段返回这个值,所有未指定的字段将使用 Apifox 的智能 Mock 生成。
示例:
image.png

2. 使用 Faker.js 动态值#

你可以使用 Apifox 的动态值(基于 Faker.js)生成真实的随机数据。使用以下语法:
{{$分类.方法}}
示例:
随机全名:{{$person.fullName}},结果如 李明
电子邮件地址:{{$internet.email}},结果如 wang.ming@163.com
产品名称:{{$commerce.productName}},结果如 高品质塑料自行车
你可以直接在下拉列表中选择相应的动态值表达式。
image.png

3. 使用带参数的 Faker 方法#

你可以为动态值表达式传递参数,以生成更专业化的数据,表达式遵循 Apifox 增强的 Faker.js 语法。
例如:
生成 0 到 10,000 之间的整数:
{{$number.int(min=0,max=10000)}}
生成易读格式的电话号码:
{{$phone.number(style='human')}}
生成 3 的倍数的整数:
{{$number.int(multipleOf=3)}}
从数组中随机选取一个元素:
{{$helpers.arrayElement(['红色','蓝色','绿色'])}}
生成指定范围内的日期(支持自定义格式):
{{$date.between(from='2024-01-01',to='2024-12-31',format='yyyy-MM-dd')}}
你可以在动态值表达式模块文档中查看完整的模块、方法及其参数列表。

4. 连接多个动态表达式(生成完整地址示例)#

你可以自由组合静态文本和多个动态表达式,生成复杂的字段值。
例如,要在一个字符串中生成真实的完整地址,可以这样写:
{{$location.streetAddress}},{{$location.city}},{{$location.state}},{{$location.zipCode}},{{$location.country}}
这将输出类似于以下的结果:
"华阳大道188号,成都市,四川省,610000,中国"
每个部分都是动态生成的,每次调用 Mock API 时都会创建一个独特且真实的地址。

自定义整个 Mock 响应(Mock 期望)#

如果你需要返回特定或高度自定义的 Mock 响应,可以使用 “Mock 期望”。这让让你完全控制 Mock 服务返回的内容。
在 “文档模式” 下,可以在接口的 Mock 标签页中设置期望。
image.png
在 “调试模式” 下,也可以在 Mock 标签页中设置期望。
image.png

返回指定数据#

通过添加一个无参数条件的期望,可以返回固定的数据。
1
点击 “新建期望”。
2
添加期望名称,“参数条件” 位置留空。
image.png
3
在返回数据中填入想要返回的内容并保存。
4
复制 Mock URL 来访问这个 API。

返回条件数据#

Apifox 支持根据不同的请求参数返回不同的 Mock 数据。
当添加多个带有不同条件的 Mock 期望时,Mock 引擎会根据请求参数匹配条件,并按照从上到下的顺序返回第一个匹配的 Mock 期望。
如果没有匹配到任何 Mock 期望,Mock 数据将根据“项目设置 -> 功能设置 -> Mock 设置”中定义的 Mock 优先级返回。
在设置参数条件时,可以选择哪些请求参数作为条件。支持的条件包括 query、path、header、cookie 和 body 参数。填写参数名和条件后,当条件满足时,系统将返回对应的响应内容。
image.png
设置多个条件时,这些条件会作为交集处理,只有当多个参数同时匹配时,才会匹配到该期望。
选择 body 参数时,可以在参数名一栏填写目标字段的 JSONPath 表达式:
第一层属性既可以通过属性名直接匹配,也可以使用 JSONPath 语法进行匹配。
深层属性只能通过 JSONPath 语法进行匹配。
body 参数仅支持 JSON 格式,不支持 XML 格式。
参数条件不支持使用 {{变量}}。
如果将 body 作为期望条件,实际请求体必须与接口定义匹配。例如,如果接口定义的请求体类型是 form-data,则在 Mock 时参数应放在 form-data 中。
可以添加 IP 条件,使某些响应仅对指定的 IP 生效。

返回动态 Mock 数据#

Mock 期望支持返回动态数据。这个功能支持使用 Faker.js 和 Nunjucks 语法。
比如下面这段代码:
{
    "data": [
        {% for i in range(0, 20) %}
        {% if i>1 %},{% endif %}
        {
            "id": {{i}},
            "firstname": "{{$person.firstName}}",
            "lastname": "{{$person.lastName}}"
        }
        {% endfor %}
    ],
    "success": true
}
这段代码会生成一个响应:
包含 20 个数据对象的数组
每个对象都有一个 “id”(0 到 19)、一个随机生成的 “firstname” 和一个随机生成的 “lastname”
“success” 字段设为 true
image.png
{{$ ... }} 语法使用 Faker.js 生成随机的真实数据,不过与原生语法不同的是,Apifox 将其变成了 {{$ ... }} 的引用方式,与原生语法的对比如下:
Faker.js: faker.person.firstName()
Apifox: {{$person.firstName}}
{% for ... %} 语法来自 Nunjucks,让你可以创建循环并生成多个数据。
这种方法使你能够创建动态且真实的 Mock 数据,每次请求的返回结果都会有所变化,从而更准确地模拟真实 API 的行为。
示例中的 {{i}} 不是 Apifox 变量,而是 Nunjucks 变量。Mock 期望中不能使用 Apifox 变量。

更多功能#

可以给 Mock 期望添加自定义 Headers。这样就能在 Mock 响应中模拟特定的 HTTP header。
image.png
在 Mock 期望的 “更多设置” 标签页,可以配置额外的响应属性:
HTTP 状态码:可以为响应设置自定义的 HTTP 状态码(默认是 200)。这样就能模拟各种 API 响应场景,包括错误状态
响应延迟:可以为响应设置延迟。这个功能对测试应用如何处理较慢的 API 响应很有用
image.png
在期望列表中,你可以通过开关控制每个期望值在本地 Mock 和云端 Mock 环境中的启用状态。
image.png
修改于 2025-04-23 09:52:20
上一页
智能 Mock
下一页
Mock 优先级
Built with