求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
要资料
 
追随技术信仰

随时听讲座
每天看新闻
 
 
PostMan 中文文档
入门
1.介绍
2.安装与更新
3.导航邮递员
4.发送您的第一个请求
5.管理您的帐户
6.同步您的工作
7.探索公共 API 网络
8.创建您的第一个系列
9.使用便笺本
10.创建工作区
11.设置邮递员
12.导入和导出数据
13.使用自定义代理
14.应用程序问题疑难解答
发送请求
15.构建请求
16.授权请求
17.接收响应
18.对集合中的请求进行分组
19.使用变量
20.管理环境
21.可视化响应
22.指定示例
23.使用 cookie
24.使用证书
25.生成客户端代码
26.故障排除请求
27.捕获请求数据概览
28.捕获 HTTP 请求
29.捕获 HTTPS 流量
30.使用邮递员拦截器
31.同步 cookie
32.使用 GraphQL 查询
33.使用 WebSocket 请求
34.发出 SOAP 请求
35.Postman 中的脚本
36.编写预请求脚本
37.编写测试
38.使用监视器运行测试
39.测试脚本示例
40.动态变量
41.邮递员 JavaScript 参考
 
 
邮递员 JavaScript 参考
来源: Postman    编辑:Alice(火龙果软件)

您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



72 次浏览
1次

pm 对象

您将使用 执行大部分 Postman JavaScript API 功能pm.*,它提供对请求和响应数据以及变量的访问。

在脚本中使用变量

您可以使用API在 Postman 的每个范围内访问和操作变量。pm

您可以在请求运行时使用动态变量来生成值。

Postman 支持多种变量范围。该pm对象提供了专门访问全局变量、集合变量和环境变量的pm.variables方法,以及访问不同范围的变量以及设置局部变量的方法。

  • 检查当前范围内是否有 Postman 变量:

pm.variables.has(variableName:String):function → Boolean

  • 获取具有指定名称的 Postman 变量的值:

pm.variables.get(variableName:String):function → *

  • 设置具有指定名称和值的局部变量:

pm.variables.set(variableName:String, variableValue:*):function

  • 使用以下语法返回脚本内动态变量的解析值{{$variableName}}

pm.variables.replaceIn(variableName:String):function: → *

 

例如:

const stringWithVars = pm.variables.replaceIn("Hi, my name is {{$randomFirstName}}");

console.log(stringWithVars);

 

  • 返回一个对象,该对象包含当前范围内的所有变量及其值。根据优先顺序,这将包含来自多个范围的变量。

pm.variables.toObject():function → Object

 

变量范围确定 Postman 在您引用变量时赋予它们的优先级,按优先级递增的顺序排列:

  • 全球的

  • 收藏

  • 环境

  • 数据

  • 当地的

具有最近范围的变量会覆盖任何其他变量。例如,如果您score在当前集合和活动环境中都命名了变量,并且您调用pm.variables.get('score'),则 Postman 将返回环境变量的当前值。当您使用 设置变量值pm.variables.set时,该值是本地的,并且只会在当前请求或收集运行中持续存在。

//collection var 'score' = 1

//environment var 'score' = 2

//first request run

console.log(pm.variables.get('score'));//outputs 2

console.log(pm.collectionVariables.get('score'));//outputs 1

console.log(pm.environment.get('score'));//outputs 2

//second request run

pm.variables.set('score', 3);//local var

console.log(pm.variables.get('score'));//outputs 3

//third request run

console.log(pm.variables.get('score'));//outputs 2

有关更多详细信息,请参阅Postman 集合 SDK 变量参考。

您还可以通过pm.environment、pm.collectionVariables和pm.globals访问在各个范围中定义的变量。

在脚本中使用环境变量

您的脚本可以使用这些pm.environment方法来访问和操作活动(当前选定的)环境中的变量。

  • 活动环境的名称
pm.environment.name:String

  • 检查环境是否有指定名称的变量:

pm.environment.has(variableName:String):function → Boolean
  • 在活动环境中获取具有指定名称的变量:
pm.environment.get(variableName:String):function → *

  • 在活动环境中设置具有指定名称和值的变量:
pm.environment.set(variableName:String, variableValue:*):function

 

  • 使用以下语法返回脚本内动态变量的解析值{{$variableName}}
pm.environment.replaceIn(variableName:String):function → *

 

例如:

//environment has vars firstName and age

const stringWithVars = pm.environment.replaceIn("Hi, my name is {{firstName}} and I am {{age}}.");

console.log(stringWithVars);

  • 在单个对象中返回活动环境中的所有变量及其值:

pm.environment.toObject():function → Object

 

  • 从活动环境中删除变量,按名称指定变量:

pm.environment.unset(variableName:String):function

 

  • 清除活动环境中的所有变量:

pm.environment.clear():function

 

请注意,您编辑变量的能力取决于您在工作区中的访问级别。

在脚本中使用集合变量

您的脚本可以使用这些pm.collectionVariables方法来访问和操作集合中的变量。

  • 检查集合中是否存在具有指定名称的变量:

pm.collectionVariables.has(variableName:String):function → Boolean

  • 返回具有指定名称的集合变量的值:

pm.collectionVariables.get(variableName:String):function → *

  • 设置具有指定名称和值的集合变量:

pm.collectionVariables.set(variableName:String, variableValue:*):function

 

  • 使用以下语法返回脚本内动态变量的解析值{{$variableName}}:

pm.collectionVariables.replaceIn(variableName:String):function → *

 

例如:

//collection has vars firstName and age

const stringWithVars = pm.collectionVariables.replaceIn("Hi, my name is {{firstName}} and I am {{age}}.");

console.log(stringWithVars);

 

  • 在对象的集合中返回所有变量及其值:

pm.collectionVariables.toObject():function → Object

 

  • 从集合中删除指定的变量:

pm.collectionVariables.unset(variableName:String):function

 

  • 清除集合中的所有变量:

pm.collectionVariables.clear():function

 

在脚本中使用全局变量

您的脚本可以使用这些pm.globals方法在工作区的全局范围内访问和操作变量。

  • 检查具有指定名称的全局变量在哪里:

pm.globals.has(variableName:String):function → Boolean

 

  • 返回具有指定名称的全局变量的值:

pm.globals.get(variableName:String):function → *

 

  • 设置具有指定名称和值的全局变量:

pm.globals.set(variableName:String, variableValue:*):function

 

  • 使用以下语法返回脚本内动态变量的解析值{{$variableName}}:

pm.globals.replaceIn(variableName:String):function → String

 

例如:

//globals include vars firstName and age

const stringWithVars = pm.globals.replaceIn("Hi, my name is {{firstName}} and I am {{age}}.");

console.log(stringWithVars);

 

  • 返回对象中的所有全局变量及其值:

pm.globals.toObject():function → Object

 

  • 删除指定的全局变量:

pm.globals.unset(variableName:String):function

 

  • 清除工作区中的所有全局变量:

pm.globals.clear():function

 

请注意,您编辑变量的能力取决于您在工作区中的访问级别。

在脚本中使用数据变量

您的脚本可以在收集运行期间pm.iterationData使用这些方法访问和操作数据文件中的变量。

  • 检查当前迭代数据中是否存在指定名称的变量:

pm.iterationData.has(variableName:String):function → boolean

 

  • 从具有指定名称的迭代数据中返回一个变量:

pm.iterationData.get(variableName:String):function → *

 

  • 返回对象中的迭代数据变量:

pm.iterationData.toObject():function → Object

 

  • 将迭代数据对象转换为 JSON 格式:

pm.iterationData.toJSON():function → *

 

  • 删除指定的变量:

pm.iterationData.unset(key:String):function

 

使用请求和响应数据编写脚本

多种方法提供对 Postman 脚本中请求和响应数据的访问,包括pm.request、pm.response、pm.info和pm.cookies。此外,您可以使用pm.sendRequest发送请求。

使用请求数据编写脚本

该pm.request对象提供对运行脚本的请求的数据的访问。对于预请求脚本,这是即将运行的请求,对于测试脚本,这是已经运行的请求。

您可以使用pm.request对象预请求脚本在运行之前更改请求配置的各个部分。

该pm.request对象提供以下属性和方法:

  • 请求网址:

pm.request.url:Url

  • 当前请求的标头列表:

pm.request.headers:HeaderList

 

  • HTTP请求方法:

pm.request.method:String

 

  • 请求正文中的数据。此对象是不可变的,不能从脚本中修改:

pm.request.body:RequestBody

 

  • 为当前请求添加具有指定名称和值的标头:

pm.request.headers.add(header:Header):function

 

例如:

pm.request.headers.add({

   key: "client-id",

   value: "abcdef"

});

 

  • 删除指定名称

pm.request.headers.remove(headerName:String):function

 

  • 插入指定的 header 名称和值(如果 header 不存在,否则已经存在的 header 将更新为新值):

pm.request.headers.upsert({key: headerName:String, value: headerValue:String}):function)

 

有关更多详细信息,请参阅 Postman Collection SDK 请求参考。

使用响应数据编写脚本

该对象提供对添加到Testspm.response的脚本中当前请求的响应中返回的数据的访问。

该pm.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

 

  • 响应 JSON,您可以使用它来深入了解收到的属性:

pm.response.json():Function → Object

 

有关更多详细信息,请参阅 Postman Collection SDK 响应参考。

使用请求信息编写脚本

该pm.info对象提供与请求和脚本本身相关的数据,包括名称、ID 和迭代计数。

该pm.info对象提供以下属性和方法:

  • 该事件将是prerequest或test取决于脚本在请求中的执行位置:

pm.info.eventName:String

 

  • 当前迭代的值:

pm.info.iteration:Number

 

  • 计划运行的迭代总数:

pm.info.iterationCount:Number

  • 正在运行的请求的保存名称:

pm.info.requestName:String

  • 标识正在运行的请求的唯一 GUID:

pm.info.requestId:String

使用请求 cookie 编写脚本

该pm.cookies对象提供对与请求关联的 cookie 列表的访问。

该pm.cookies对象提供以下属性和方法:

  • 检查请求的域是否存在特定的 cookie(由名称指定):

pm.cookies.has(cookieName:String):Function → Boolean

 

  • 获取指定cookie的值:

pm.cookies.get(cookieName:String):Function → String

 

  • 获取对象中所有 cookie 及其值的副本。返回为请求域和路径定义的任何 cookie:

pm.cookies.toObject():Function → Object

 

有关更多详细信息,请参阅 Postman Collection SDK Cookie 列表参考。

您还可以使用pm.cookies.jar指定域来访问请求 cookie。

要通过这些pm.cookies.jar方法启用编程访问,首先将 cookie URL 添加到允许列表。

  • 访问 cookie jar 对象:

pm.cookies.jar():Function → Object

 

例如:

const jar = pm.cookies.jar();

//cookie methods...

 

  • 使用名称和值设置 cookie:

jar.set(URL:String, cookie name:String, cookie value:String, callback(error, cookie)):Function → Object

  • PostmanCookie或兼容对象设置 cookie:

jar.set(URL:String, { name:String, value:String, httpOnly:Bool }, callback(error, cookie)):Function → Object

例如:

const jar = pm.cookies.jar();

jar.set("httpbin.org", "session-id", "abc123", (error, cookie) => {

   if (error) {

      console.error(`An error occurred: ${error}`);

    } else {

      console.log(`Cookie saved: ${cookie}   );

}

});

 

从 cookie jar 中获取 cookie:

jar.get(URL:String, cookieName:String, callback (error, value)):Function → Object

 

从饼干罐中取出所有饼干。cookie 在回调函数中可用:

jar.getAll(URL:String, callback (error, cookies)):Function

 

删除 cookie:

jar.unset(URL:String, token:String, callback(error)):Function → Object

 

清除 cookie jar 中的所有 cookie:

jar.clear(URL:String, callback (error)):Function → Object

 

有关更多详细信息,请参阅 Postman Collection SDK Cookie 参考。

从脚本发送请求

您可以使用该pm.sendRequest方法从预请求或测试脚本异步发送请求。这允许您在执行计算或同时发送多个请求时在后台执行逻辑,而无需等待每个请求完成。您可以通过添加回调函数来避免阻塞问题,以便您的代码可以在 Postman 收到响应时做出响应。然后,您可以对响应数据执行所需的任何其他处理。

您可以将pm.sendRequestURL 字符串传递给方法,也可以在 JSON 中提供完整的请求配置,包括标头、方法、正文等。

// Example with a plain string URL

pm.sendRequest('https://postman-echo.com/get', (error, response) => {

   if (error) {

      console.log(error);

   } else {

   console.log(response);

   }

});

// Example with a full-fledged request

const postRequest = {

   url: 'https://postman-echo.com/post',

   method: 'POST',

   header: {

      'Content-Type': 'application/json',

      'X-Foo': 'bar'

   },

    body: {

       mode: 'raw',

       raw: JSON.stringify({ key: 'this is json' })

    }

};

pm.sendRequest(postRequest, (error, response) => {

console.log(error ? error : response.json());

});

// Example containing a test

pm.sendRequest('https://postman-echo.com/get', (error, response) => {

if (error) {

      console.log(error);

}

pm.test('response should be okay to process', () => {

pm.expect(error).to.equal(null);

pm.expect(response).to.have.property('code', 200);

pm.expect(response).to.have.property('status', 'OK');

});

});

 

有关更多详细信息,请参阅请求定义和响应结构参考文档。

脚本工作流程

当您使用集合运行器或Newman时,该postman对象提供了setNextRequest构建请求工作流的方法。

请注意,当您使用“发送setNextRequest”按钮运行请求时,它不起作用,它仅在您运行集合时生效。

当您运行一个集合时(使用集合运行器或 Newman),Postman 将以默认顺序或您在设置运行时指定的顺序运行您的请求。但是,您可以覆盖此执行顺序,postman.setNextRequest以指定接下来应该运行哪个请求。

  • 在此之后运行指定的请求(集合中定义的请求名称,例如“Get customers”):

postman.setNextRequest(requestName:String):Function

  • 在这个之后运行指定的请求(返回的请求ID pm.info.requestId):

postman.setNextRequest(requestId:String):Function

 

例如:

//script in another request calls:

//pm.environment.set('next', pm.info.requestId)

postman.setNextRequest(pm.environment.get('next'));

 

脚本可视化

用于pm.visualizer.set指定模板以在可视化工具中显示响应数据。

pm.visualizer.set(layout:String, data:Object, options:Object):Function

 

  • layout 必需的

Handlebars HTML 模板字符串

  • data 可选的

绑定到模板的 JSON 对象,您可以在模板字符串中访问它

  • options 可选的

选项对象Handlebars.compile()

示例用法:

var template = `<p>{{res.info}}</p>`;

pm.visualizer.set(template, {

       res: pm.response.json()

});

 

将响应数据构建到可视化中

用于pm.getData检索可视化模板字符串中的响应数据。

pm.getData(callback):Function

 

回调函数接受两个参数:

  • error

任何错误详情

  • data

传递给模板的数据由pm.visualizer.set

示例用法:

pm.getData(function (error, data) {

      var value = data.res.info;

});

 

编写测试断言

  • pm.test(testName:String, specFunction:Function):Function

您可以使用pm.test在Pre-request或Tests脚本中编写测试规范。测试包括名称和断言——Postman 将输出测试结果作为响应的一部分。

该pm.test方法返回pm对象,使调用可链接。以下示例测试检查响应是否有效以继续。

pm.test("response should be okay to process", function () {

   pm.response.to.not.be.error;

   pm.response.to.have.jsonBody('');

   pm.response.to.not.have.jsonBody('error');

});

 

可以将可选的done回调传递给pm.test, 以测试异步函数。

pm.test('async test', function (done) {

   setTimeout(() => {

       pm.expect(pm.response.code).to.equal(200);

      done();

   }, 1500);

});

 

  • 获取从代码中特定位置执行的测试总数:

pm.test.index():Function → Number

 

该方法允许您使用ChaiJS 期望 BDD语法pm.expect在响应数据上编写断言。

pm.expect(assertion:*):Function → Assertion

您还可以使用pm.response.to.have.*andpm.response.to.be.*来构建您的断言。

有关更多断言,请参阅测试示例。

使用外部库

require(moduleName:String):function → *

该require方法允许您使用沙盒内置库模块。下面列出了可用库的列表以及相应文档的链接。

  • ajv

  • 阿托布

  • BTOA

  • 切里奥

  • 加密js

  • csv 解析/lib/同步

  • lodash(内置_对象v3.10.1默认存在于沙箱中,require用于加载最新版本。)

  • 片刻

  • 邮递员收集

  • 电视4

  • uuid

  • xml2js

许多 NodeJS 模块也可以在沙箱中使用:

  • 小路

  • 断言

  • 缓冲

  • 实用程序

  • 网址

  • 小码

  • 请求参数

  • 字符串解码器

  • 溪流

  • 计时器

  • 事件

为了使用库,调用require方法,将模块名称作为参数传递,并将方法的返回对象分配给变量。

下一步

您可以使用Postman 实用程序以多种方式使用测试将 Postman 构建到您的开发项目中。

 

 

72 次浏览
1次