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
    • 概述
    • 新建 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 运行包含云端数据库连接配置的测试场景
  • 账号&应用设置
    • 账号设置
    • 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 的脚本,所以你可以使用 Postman 的脚本 API 来编写脚本。

pm#

pm:Object
pm对象包含了接口(或测试集)运行的相关信息,并且可以通过它访问需要发送的请求信息和发送后返回的响应信息。另外还可以通过它获取 (get) 或设置 (set) 环境变量和全局变量。
pm.info:Object
pm.info 对象包含了接口(或测试集)运行的相关信息。
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
pm.sendRequest 用途为在脚本内异步发送 HTTP/HTTPS 请求。
该方法接受一个 collection SDK 兼容的 request 参数和一个 callback 函数参数。 callback 有 2 个参数,第一个是 error ,第二个是 collection SDK 兼容的 response。更多信息请查阅 Collection SDK 文档 。
在前置脚本和后置脚本都可以使用。
参考:
Request JSON 结构
Response 结构

pm.variables#

pm.variables: Variable SDK 参考
临时变量。不同类型的变量,有不同的优先级,不同类型变量的优先级顺序为: 临时变量 > 环境变量 > 项目全局变量 > 团队全局变量。
pm.variables.has(variableName:String):function → Boolean: 检查是否存在某个临时变量。
pm.variables.get(variableName:String):function → *: get 单个临时变量。
pm.variables.set(variableName:String, variableValue:String):function → void: set 单个临时变量。
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:
测试数据变量,因为测试数据是单独管理的,暂不支持在脚本中直接设置测试数据变量,但是你可以在脚本中访问测试数据变量,如下。
pm.iterationData.has(variableName:String):function → Boolean: 检查是否存在某个测试数据变量。
pm.iterationData.get(variableName:String):function → *: get 单个测试数据变量。
pm.iterationData.replaceIn(variableName:String):function: 以真实的值替换字符串里包含的“动态变量”,如{{variable_name}}。
pm.iterationData.toObject():function → Object: 以对象形式获取所有测试数据变量。

pm.environment#

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

pm.globals#

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

pm.request#

pm.request: Request SDK 参考
request 是接口请求对象。在前置脚本中表示将要发送的请求,在后置脚本中表示已经发送了的请求。
request 包含了以下结构:
pm.request.url:Url: 当前请求的 URL。
pm.request.getBaseUrl():获取当前运行环境选择的的 前置 URL,在 2.1.39 版本之后支持。
pm.request.headers:HeaderList:当前请求的 headers 列表。
pm.request.method:String 当前请求的方法,如GET、POST等。
pm.request.body:RequestBody: 当前请求的 body 体。
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: upsert key 为headerName的 header(如不存在则新增,如已存在则修改)。
pm.request.auth: 当前请求的身份验证信息
使用示例:
在后置操作中填入自定义脚本,参考下图示例,选择所需要的提取对象,编写对应的函数。
例如提取请求中的 headers 中的 Accept 值并打印到控制台。
image.png

pm.response#

以下部分 API 仅在后置脚本中可用
pm.response: Response SDK 参考
在后置脚本中 pm.response 接口请求完成后返回的 response 信息。
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.response.headers.get 命令可以提取返回响应中的 headers 中的值。例如想要在控制台中显示 Header 中的 Date 值,那么可以在后置操作中填写如下自定义脚本:
若希望将其作为变量供其它接口调用,详细说明请参考接口之间如何传递数据的最佳实践。

pm.cookies#

pm.cookies: CookieList SDK 参考
cookies 为当前请求对应域名下的 cookie 列表。
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
该方法用来断言某个结果是否符合预期。
以下示例为检查返回的 respone 是否正确:
通过 callback 的可选参数 done ,还可用来测试异步方法:
pm.test.index():Function → Number
Get the total number tests from a specific location.

pm.expect#

pm.expect(assertion:*):Function → Assertion
pm.expect 是一个普通的断言方法,查看详细的说明: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 是用来快速断言的一系列内置规则。
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