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 运行包含云端数据库连接配置的测试场景
  • 账号&应用设置
    • 账号设置
    • 语言设置
    • 网络代理
    • 快捷键
    • 数据备份与恢复
    • 更新 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. 使用脚本

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
修改于 2025-01-16 06:48:08
上一页
公共脚本
下一页
使用 JS 类库
Built with