Apifox 帮助文档
帮助文档常见问题Apifox 官网私有化部署
开发者中心
  • 开放 API
  • 更新日志
  • Road Map
  • Apifox Markdown
下载
  • 下载 Apifox
  • 下载 IDEA 插件
  • 下载浏览器扩展
  • Apifox Web 版
帮助文档常见问题Apifox 官网私有化部署
开发者中心
  • 开放 API
  • 更新日志
  • Road Map
  • Apifox Markdown
下载
  • 下载 Apifox
  • 下载 IDEA 插件
  • 下载浏览器扩展
  • Apifox Web 版
  1. 开发和调试 API
  • 帮助中心
  • 更新日志
  • 入门
    • 产品介绍
    • 联系我们
    • 私有化部署
  • 开始使用
    • 下载 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(密钥库)
        • 功能简介
    • 前后置操作&脚本
      • 概述
      • 断言
      • 提取变量
      • 等待时间
      • 数据库操作
        • 概述
        • MySQL
        • 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 平台集成
      • Git 提交自动触发测试
  • 发布 API 文档
    • 概述
    • 快捷分享
    • 查看 API 文档
    • 发布文档站
    • 页面布局设置
    • 自定义域名
    • AI 相关特性
    • SEO 设置
    • 高级设置
      • 文档站搜索设置
      • 跨域代理
      • 文档站接入 Google Analytics
      • 文档左侧目录设置
      • 文档可见性设置
      • 在线 URL 链接规范
    • API 版本
      • 功能简介
      • 创建 API 版本
      • 发布 API 版本
      • 快捷分享 API 版本
  • 迭代分支
    • 功能简介
    • 新建迭代分支
    • 在迭代分支中改动 API
    • 在迭代分支中测试 API
    • 合并迭代分支
    • 管理迭代分支
  • 管理中心
    • 入驻清单
      • 了解基本概念
      • 团队入驻
    • 管理团队
      • 成员角色与权限设置
      • 团队基本操作
      • 团队成员管理
      • 团队资源
        • 通用 Runner
        • 请求代理 Agent
        • 团队变量
      • 实时协作
        • 团队协作
    • 管理项目
      • 项目基本操作
      • 项目成员管理
      • 通知设置
        • 功能简介
        • 通知对象
        • 通知事件
      • 项目资源
        • 数据库连接
    • 管理组织
      • 单点登录(SSO)
        • 功能简介
        • 为组织配置单点登录
        • 管理用户账号
        • 将组映射到团队
        • Microsoft Entra ID
      • SCIM 用户管理
        • 功能简介
        • Microsoft Entra ID
      • 组织资源
        • 自托管 Runner
  • IDEA 插件
    • 快速上手
    • 生成接口文档
    • 生成数据模型
    • 配置
      • 全局配置
      • 项目内配置
      • 可配置规则
      • 脚本工具
      • Groovy 本地扩展
    • 进阶配置
      • 注释规范说明
      • 框架支持
    • 常见问题
      • 常见问题
  • 浏览器扩展
    • Chrome
    • Microsoft Edge
  • Apifox AI 功能
    • 总览
    • 启用 AI 功能
    • 修改数据模型
    • 常见问题
  • Apifox MCP Server
    • 概述
    • 通过 MCP 使用 Apifox 项目内的 API 文档
    • 通过 MCP 使用公开发布的 API 文档
    • 通过 MCP 使用 OpenAPI/Swagger文档
  • 最佳实践
    • 概述
    • 接口之间如何传递数据
    • 登录态(Auth)如何处理
    • 接口签名如何处理
    • 如何加密/解密接口数据
    • Jenkins 定时触发任务
    • 如何计算 AI 问答成本
    • 与其他成员共用数据库连接配置
    • 通过 CLI 运行包含云端数据库连接配置的测试场景
    • 通过 Runner 运行包含云端数据库连接配置的测试场景
    • Apifox 测试步骤之间怎么传递数据?
  • 账号&应用设置
    • 账号设置
    • API 访问令牌
    • 语言设置
    • 快捷键
    • 网络代理
    • 数据备份与恢复
    • 更新 Apifox
    • 实验性功能
  • 身份验证 & 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. 开发和调试 API

动态值

在 Apifox 中调试接口时,如果经常需要在请求参数、请求体中构造值、名称、地址或其他数据,这时“动态值”功能就派上用场了。
动态值允许你在每次发送请求时,根据预定义的规则生成一个新值。这有助于简化调试过程,并确保每个请求包含唯一的数据。

应用场景#

动态值在 API 测试中有广泛的应用。以下是一些典型示例:
模拟真实数据: 你需要测试你的 API 如何处理不同类型的数据,例如各种格式的用户名、地址或电子邮件地址。使用动态值,你可以轻松生成大量类似于真实场景的测试数据,从而提高测试覆盖率。
生成唯一值: 在某些测试场景中,你需要确保数据的唯一性,例如生成订单号、用户 ID 或交易 ID。动态值可以根据时间戳或随机数生成唯一值,防止数据冲突并确保测试结果准确。
简化数据处理: 不需要为每次测试运行手动修改数据,使用动态值自动生成所需的数据。这可以节省你大量的时间和精力,提高测试效率。

使用入门#

Apifox 版本号需 >=2.6.15

1.
在接口中,切换到 “运行” 选项卡。
2.
对于要动态化的参数,可以先删除原始值,然后单击值右侧的 魔棒 图标。
image.png
3.
点击 “数据生成器”,然后选择所需的动态值类型,例如名字。
image.png
4.
点击 “插入” 将动态值表达式插入到参数中。
image.png
5.
点击 “发送”,你可以在 “实际请求” 中看到发送的实际名称。
image.png
6.
再次发送请求,将动态生成一个新的名字。
旧版的动态值表达式是形如{% mock 'name' %}的形式,这种使用方式后续将会废弃。建议你将 Apifox 升级到最新版本,并开始使用新版的动态值表达式。

在 JSON 请求体中使用动态值#

如果需要发送 JSON 请求体,并且 JSON 中的某些值需要动态生成,你也可以使用动态值。

1.
找到一个带有 JSON 请求体的 POST 接口,并切换到运行选项卡。
2.
在 JSON 请求体中,单击 “自动生成 -> 仅生成字段名”,你将获得在 API 文档中定义的属性名称。
image.png
3.
将光标定位在正确的位置,单击 “动态值”,然后选择 “数据生成器”。
image.png
4.
选择适当的数据类型,然后单击 “插入”。
5.
为所有字段添加值。
6.
单击 “发送”。你可以在 “实际请求” 部分中看到实际发送的 JSON 请求体。
image.png
7.
如果再次发送请求,动态值将生成新的 JSON 请求体。

在自定义表达式中使用动态值#

如果需要自定义一串信息,并且信息中有一些值需要动态生成,你还可以单击 “自定义表达式” 并输入动态值表达式。自定义表达式是遵循 Nunjucks 模板引擎语法的,你可以查阅他们的文档。
1.
单击 “动态值” 图标,然后选择 “自定义表达式” 以打开输入框。
image.png
2.
通过拼接等方法输入 “动态值表达式” 来生成预期内容,你可以在下方实时预览生成的信息。
image.png
3.
单击 “插入”,你可以在参数值部分看到自定义表达式。
image.png
4.
除此之外,你还可以使用 Nunjucks 模板引擎语法来辅助生成。
例如:
image.png
这将生成 20 个随机用户数据,其中包含随机的名字和姓氏。
image.png
常见的自定义表达式,你可以到动态值表达式模块查看更多详情。

手动插入动态值#

在需要插入动态值的输入字段中,你可以输入 {{$ 来触发动态值列表。
image.png
你可以使用以下方法快速定位所需的变量:
完整输入: 准确输入完整的动态值名称,例如 $timestamp。
模糊匹配: 输入部分关键词,例如 time,系统会自动过滤并显示匹配的动态值。
选择目标动态值将其插入到输入字段中。

数据生成器#

使用数据生成器,你可以根据需要生成任何自定义数据。
将鼠标悬停在参数输入字段上,单击出现的魔棒图标以打开 “数据生成器” 面板。
image.png
你可以在面板中使用两种方法找到所需的动态值:
按变量类型搜索: 通过选择动态值类型(例如日期、字符串、数字等)快速定位所需的变量范围,提高搜索效率。
image.png
按关键词搜索: 在顶部的 “类型” 输入框中输入关键词(例如时间、字符串等),系统会自动过滤并显示匹配的动态值,方便你快速定位。
image.png
选择所需的动态值后,你可以通过以下操作对其进行进一步的细化,以满足更精细的数据生成需求:
添加方法: 一些动态值支持附加方法,例如 {{$date.now}} 可以使用 addDays 方法添加天数以生成特定日期的数据。
image.png
添加处理函数: 所有动态值结果都可以使用函数进行处理,例如,使用 md5 函数对字符串进行加密以生成满足安全要求的测试数据。
image.png
“表达式” 区域清楚地显示你当前选择的动态值类型、方法和函数,方便你进行检查和修改。
“预览” 区域实时显示动态值生成的示例数据。单击 “预览” 区域末尾的 “刷新” 按钮可以生成新的示例数据,方便你查看数据生成的效果。
单击 “预览” 区域中的示例数据可以自动复制内容,方便你将其粘贴到需要的位置。

在自定义脚本中使用动态值#

Apifox 支持在自定义脚本中生成动态值。你可以使用 pm.variables.replaceInAsync(variableName: String): function 方法将字符串中的“动态值表达式”替换为实际生成的值。该方法返回一个 Promise,因此在调用时需要配合 await 使用。
以下是一个生成随机姓名的示例:
在脚本运行时,{{$person.fullName}} 会被自动替换为一个真实的姓名。
image.png
想了解更多关于 pm.variables 的使用方法,请查阅 pm.variables 文档。
如需查看所有支持的动态值表达式及其用法,请参考 动态值表达式文档。

设置数据语言/国家#

Apifox 的动态值支持生成不同语言的示例数据,以满足你在多语言环境中的测试需求。操作方法如下:
1.
打开 “数据生成器” 面板。
2.
对于 “日期” 和 “时间” 以外的动态值类型,单击动态值类型右上角的切换组件,然后选择相应的目标语言即可。
image.png
3.
对于 “日期” 和 “时间” 的动态值类型,你可以使用 format 和 locale 方法指定语言和格式。
image.png

强大的日期操作和格式化#

Apifox 不仅仅提供丰富的日期和时间动态值,它还致力于简化你的开发过程。以下是你可以轻松实现的一些功能:
灵活的时间调整: 使用 add 方法,你可以轻松地根据当前时间添加或减去时间单位。例如,{{$date.now|addHours(-3)}} 将返回比当前时间早 3 小时的日期。
image.png
多样化的日期格式化: 使用 format 方法,你可以根据需要将日期格式化为不同的格式。例如,{{$date.now|formatISO}} 将根据 ISO 8601 标准格式化日期。
image.png
精确的时区控制: 通过设置 timezone 参数,你可以轻松控制日期的时区。例如,{{$date.now|format('yyyy-MM-dd HH:mm:ss',timezone='America/Port-au-Prince')}} 将返回 UTC+8:00 时区中当前时间对应的日期。
image.png

常见动态值#

为了帮助你更好地使用 Apifox 动态值,我们整理了完整的动态值清单和示例说明。你可以点击动态值表达式模块查阅,快速找到你需要的动态值及其使用方法。
你也可以在 Apifox 内,将鼠标悬停在动态值表达式上,查看该动态值的简要说明和示例。
上一页
接口用例
下一页
校验响应
Built with