Apifox 帮助文档
帮助文档常见问题Apifox 官网私有化部署
开发者中心
  • 开放 API
  • 更新日志
  • Road Map
  • Apifox Markdown
下载
  • 下载 Apifox
  • 下载 IDEA 插件
  • 下载浏览器扩展
  • Apifox Web 版
帮助文档常见问题Apifox 官网私有化部署
开发者中心
  • 开放 API
  • 更新日志
  • Road Map
  • Apifox Markdown
下载
  • 下载 Apifox
  • 下载 IDEA 插件
  • 下载浏览器扩展
  • Apifox Web 版
  1. 使用脚本
  • 帮助中心
  • 更新日志
  • 入门
    • 产品介绍
    • 联系我们
    • 私有化部署
  • 开始使用
    • 下载 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
    • 概述
    • 接口的组织方式
    • 接口基础知识
    • 接口设计规范
    • 模块
    • 请求体多示例配置
    • 响应组件
    • 常用字段
    • 全局参数
    • 历史记录
    • 接口评论
    • 批量管理
    • 数据模型
      • 概述
      • 新建数据模型
      • 构建数据模型
      • 通过 JSON 等生成
      • 高级数据类型
      • 数据模型进阶
        • 使用 oneOf / anyOf / allOf 构建组合模式
    • 鉴权组件
      • 概述
      • 创建鉴权组件
      • 使用鉴权组件
      • 在线文档中的鉴权组件
    • 高级功能
      • 接口字段
      • 接口状态
      • 关联测试场景
      • 参数列表外观
      • 接口唯一标识
  • 开发和调试 API
    • 概述
    • 生成请求
    • 发送请求
    • 请求历史
    • 接口调试用例
    • 接口测试用例
    • 动态值
    • 校验响应
    • 文档模式/调试模式
    • 生成代码
    • 环境和变量
      • 概述
      • 环境管理
      • 全局/环境/模块/临时变量
      • Vault Secrets(密钥库)
        • 功能简介
    • 前后置操作&脚本
      • 概述
      • 断言
      • 提取变量
      • 等待时间
      • 数据库操作
        • 概述
        • MySQL
        • MongoDB
        • Redis
        • Oracle
      • 使用脚本
        • 概述
        • 前置脚本
        • 后置脚本
        • 公共脚本
        • pm 脚本 API
        • 使用 JS 类库
        • 响应数据可视化
        • 调用外部程序
      • 脚本示例
        • 断言示例
        • 脚本使用变量
        • 脚本读取/修改接口请求信息
      • 常见问题
        • 如何获取动态参数的真实值并加密?
        • 脚本运行后,提取的数字(bigint)精度丢失应该如何处理?
    • API 调试
      • GraphQL 调试
      • WebSocket 调试
      • Socket.IO 调试
      • SSE 调试
      • SOAP/WebService
      • gRPC 调试
      • Webhook 调试
      • 使用请求代理调试
      • 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
        • 团队变量
      • 实时协作
        • 团队协作
    • 管理项目
      • 项目基本操作
      • 项目成员管理
      • 通知设置
        • 功能简介
        • 通知对象
        • 通知事件
      • 项目资源
        • 数据库连接
        • Git 仓库连接
    • 管理组织
      • 单点登录(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. 使用脚本

pm 脚本 API

Apifox 兼容了 Postman 的脚本 API,你可以在 前置脚本 或 后置脚本 中使用这些 API 来获取请求和响应信息、读写变量、发送请求、做断言等。

pm#

pm:Object
脚本的核心对象,包含了接口(或测试集)运行的相关信息,可以通过它访问需要发送的请求信息和发送后返回的响应信息,还可以通过它获取(get)或设置(set)环境变量和全局变量。

pm.info#

pm.info:Object
用于获取运行时上下文信息(迭代次数、请求名称/ID、脚本类型等)。
pm.info.eventName:String
当前执行是什么类型的脚本:前置脚本(prerequest),或后置脚本(test)。
pm.info.iteration:Number
当前执行第几轮循环(iteration),仅集合测试有效。
pm.info.iterationCount:Number
本次执行需要循环的总轮数,仅集合测试有效。
pm.info.requestName:String
当前正在运行的接口用例名称
pm.info.requestId:String
当前正在运行的接口用例名称的唯一 ID
示例:

pm.sendRequest#

pm.sendRequest:Function
用于在脚本内异步发送 HTTP/HTTPS 请求。
该方法接受一个 collection SDK 兼容的 request 参数和一个 callback 函数参数。 callback 有 2 个参数,第一个是 error ,第二个是 collection SDK 兼容的 response。更多信息请查阅 Collection SDK 文档 。
在前置脚本和后置脚本都可以使用。
参考
Request JSON 结构
Response 结构

pm.variables#

pm.variables:Object:Variable SDK 参考
用于操作临时变量。临时变量仅在当前请求/运行时有效。
pm.variables.has(variableName:String):function → Boolean
检查是否存在某个临时变量。
pm.variables.get(variableName:String):function → *
获取单个临时变量。
pm.variables.set(variableName:String, variableValue:String):function → void
设置单个临时变量。
pm.variables.replaceIn(variableName:String):function
以真实的值替换字符串里包含的“动态变量”,如{{variable_name}}。示例:
pm.variables.replaceInAsync(variableName:String):function
以真实的值替换字符串里包含的“动态值表达式”,如{{$person.fullName}}。返回 Promise,调用时需加 await。示例:
pm.variables.toObject():function → Object
以对象形式获取所有临时变量。
示例:

pm.iterationData#

pm.iterationData:Object
用于操作自动化测试里的 “测试数据变量”。只读。
pm.iterationData.has(variableName:String):function → Boolean
检查是否存在某个测试数据变量。
pm.iterationData.get(variableName:String):function → *
获取单个测试数据变量。
pm.iterationData.replaceIn(variableName:String):function
以真实的值替换字符串里包含的“动态变量”,如{{variable_name}}。
pm.iterationData.toObject():function → Object
以对象形式获取所有测试数据变量。
示例:

pm.environment#

pm.environment:Object
用于操作环境变量的 “本地值”。
pm.environment.name:String
获取环境名称(如开发环境、测试环境)。
pm.environment.has(variableName:String):function → Boolean
检查是否存在某个环境变量。
pm.environment.get(variableName:String):function → *
获取单个环境变量。
pm.environment.set(variableName:String, variableValue:String):function
设置单个环境变量。
pm.environment.replaceIn(variableName:String):function
以真实的值替换字符串里的包含的动态变量,如{{variable_name}}。
pm.environment.toObject():function → Object
以对象形式获取当前环境的所有变量。
pm.environment.unset(variableName:String):function
删除单个环境变量。
pm.environment.clear():function
清空当前环境的所有变量。
示例:
以上所有操作都是读写的本地值,而不会读写远程值。

pm.moduleVariables#

pm.moduleVariables:Object
用于操作模块变量的 “本地值”。
pm.moduleVariables.has(variableName:String):function → Boolean
检查是否存在某个模块变量。
pm.moduleVariables.get(variableName:String):function → *
获取单个模块变量。
pm.moduleVariables.set(variableName:String, variableValue:String):function
设置单个模块变量。
pm.moduleVariables.replaceIn(variableName:String):function
将字符串中包含的 {{variable}} 占位符替换为真实值。
pm.moduleVariables.toObject():function → Object
以对象形式获取所有模块变量。
pm.moduleVariables.unset(variableName:String):function
删除单个模块变量。
pm.moduleVariables.clear():function
清空当前模块的所有变量。
示例:
兼容写法:pm.collectionVariables 与 pm.moduleVariables 效果相同,可以互换使用。

pm.globals#

pm.globals:Object
用于操作全局变量的 “本地值”。
pm.globals.has(variableName:String):function → Boolean
检查是否存在某个全局变量。
pm.globals.get(variableName:String,variableScope:String):function → *
获取单个全局变量。 可以使用 'PROJECT' (默认)或 'TEAM' 来选择项目全局变量或团队全局变量。
pm.globals.set(variableName:String,variableValue:String, variableScope:String):function
设置单个全局变量。可以使用 'PROJECT' (默认)或 'TEAM' 来选择项目全局变量或团队全局变量。
pm.globals.replaceIn(variableName:String):function
以真实的值替换字符串里的包含的动态变量,如{{variable_name}}。
pm.globals.toObject():function → Object
以对象形式获取所有全局变量。
pm.globals.unset(variableName:String):function
删除单个全局变量。
pm.globals.unset(variableName:String,variableScope:String):function
删除单个全局变量。可以使用 'PROJECT' (默认)或 'TEAM' 来选择项目全局变量或团队全局变量。
pm.globals.clear():function
清空当前环境的全局变量。
示例:
1.
以上所有操作都是读写的本地值,而不会读写远程值。
2.
当使用 set 并带上 'TEAM' 变量范围时,只会更改已有同名团队变量的本地值。如果当前不存在此名称的团队变量,则不会新增一个团队变量,而是把本次 set 的变量当做临时变量来使用。

pm.request#

pm.request:Object Request SDK 参考
用于访问当前请求对象。在前置脚本中表示将要发送的请求,在后置脚本中表示已经发送了的请求。
request 包含了以下结构:
pm.request.url
当前请求的 URL。
pm.request.getBaseUrl()
获取当前运行环境选择的 前置 URL。
pm.request.method
当前请求的方法,如GET、POST等。
pm.request.body
当前请求的 body 体。
pm.request.headers
当前请求的 headers 列表。
pm.request.headers.add({ key: headerName:String, value: headerValue:String}):function
给当前请求添加一个 key 为headerName的 header。
pm.request.headers.remove(headerName:String):function
删除当前请求里 key 为headerName的 header
pm.request.headers.get(headerName:String):function
获取当前请求里的 headerName。
pm.request.headers.upsert({ key: headerName:String, value: headerValue:String}):function
新增或更新 key 为headerName的 header(如不存在则新增,如已存在则修改)。
pm.request.auth
当前请求的身份验证信息。
示例:

pm.response#

pm.response:Object Response SDK 参考
表示当前请求的响应。仅在后置脚本可用,包含状态码、headers、响应体等。
response 包含以下结构:
pm.response.code:Number
pm.response.status:String
pm.response.headers:HeaderList
pm.response.responseTime:Number
pm.response.responseSize:Number
pm.response.text():Function → String
pm.response.json():Function → Object
pm.response.setBody('')
pm.response.headers.get: Response SDK 参考
示例:
若希望将其作为变量供其它接口调用,详细说明请参考接口之间如何传递数据的最佳实践。

pm.cookies#

pm.cookies:Object CookieList SDK 参考
获取当前请求对应域名下的 cookies。
pm.cookies.has(cookieName:String):Function → Boolean
检查是否存在名为cookieName的 cookie 值
pm.cookies.get(cookieName:String):Function → String
get 名为cookieName的 cookie 值
pm.cookies.toObject:Function → Object
以对象形式获取当前域名下所有 cookie
pm.cookies.jar().clear(pm.request.getBaseUrl())
清空全局 cookies
示例:
pm.cookies 为接口请求后返回的 cookie,而不是接口请求发出去的 cookie。

pm.test#

pm.test(testName:String, specFunction:Function):Function
用于编写断言,验证响应或变量是否符合预期,支持同步和异步测试。
pm.test(testName:String, specFunction:Function):Function
pm.test.index():Function → Number :获取测试索引。
检查返回的 respone 是否正确:
通过 callback 的可选参数 done ,还可用来测试异步方法:

pm.expect#

pm.expect(assertion:*):Function → Assertion
一个普通的断言方法,查看详细的说明:ChaiJS expect BDD library。
该方法用来断言 response 或 variables里的数据非常有用,更多关于 pm.expect断言的是示例,可以点击这里查看:Assertion library examples

Response 可用断言 API#

pm.response.to.have.status(code:Number)
pm.response.to.have.status(reason:String)
pm.response.to.have.header(key:String)
pm.response.to.have.header(key:String, optionalValue:String)
pm.response.to.have.body()
pm.response.to.have.body(optionalValue:String)
pm.response.to.have.body(optionalValue:RegExp)
pm.response.to.have.jsonBody()
pm.response.to.have.jsonBody(optionalExpectEqual:Object)
pm.response.to.have.jsonBody(optionalExpectPath:String)
pm.response.to.have.jsonBody(optionalExpectPath:String, optionalValue:*)
pm.response.to.have.jsonSchema(schema:Object)
pm.response.to.have.jsonSchema(schema:Object, ajvOptions:Object)

pm.response.to.be#

断言响应状态的快捷方法。
pm.response.to.be.info
检查状态码是否为1XX
pm.response.to.be.success
检查状态码是否为2XX
pm.response.to.be.redirection
检查状态码是否为3XX
pm.response.to.be.clientError
检查状态码是否为4XX
pm.response.to.be.serverError
检查状态码是否为5XX
pm.response.to.be.error
检查状态码是否为4XX或5XX
pm.response.to.be.ok
检查状态码是否为200
pm.response.to.be.accepted
检查状态码是否为202
pm.response.to.be.badRequest
检查状态码是否为400
pm.response.to.be.unauthorized
检查状态码是否为401
pm.response.to.be.forbidden
检查状态码是否为403
pm.response.to.be.notFound
检查状态码是否为404
pm.response.to.be.rateLimited
检查状态码是否为429
上一页
公共脚本
下一页
使用 JS 类库
Built with