Postman 提供的Javascript 对象有哪些?

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 大家好,我是阿萨。 昨天介绍了Postman的前置操作是干什么的?有同学反馈说对Postman 提供的javascript 对象不熟悉,希望介绍下。今天这一篇文章就专门给大家介绍下。

Postman提供了可以在请求脚本中使用的JavaScript api。pm对象提供了测试请求和响应数据的功能,同时还有变量设置方法。

Postman的API 都是pm.* 提供的。 所以所有的脚本开头是pm 开头的。


一.脚本中变量的使用方法


pm对象提供了访问全局变量、集合变量和环境变量以及pm的方法。变量方法用于访问不同作用域的变量和设置局部变量。


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


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


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


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


3. 用指定的名称和值设置一个局部变量:


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


4. 使用{{$variableName}}返回脚本中动态变量的解析值:



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


例如:


const stringWithVars = pm.variables.replaceIn("This is {{$randomFirstName}}’s offical account");console.log(stringWithVars);


5. 返回一个包含所有变量及其值在当前作用域内的对象。根据优先级的顺序,这将包含来自多个作用域的变量。


pm.variables.toObject():function → Object


变量范围决定了当你引用变量时Postman给它们的优先级,按照优先级递增的顺序:全局>集合>环境>数据>当地的具有最近作用域的变量将覆盖其他任何变量。例如,如果在当前集合和活动环境中都有名为asa的变量,并且调用pm.variables.get('asa'), Postman将返回环境变量的当前值。当您使用pm.variables设置变量值时。设置时,该值是本地的,仅在当前请求或收集运行时持久存在。


//collection var 'asa' = 1//environment var 'asa' = 2
//first request runconsole.log(pm.variables.get('asa'));//outputs 2console.log(pm.collectionVariables.get('asa'));//outputs 1console.log(pm.environment.get('asa'));//outputs 2
//second request runpm.variables.set('asa', 3);//local varconsole.log(pm.variables.get('asa'));//outputs 3
//third request runconsole.log(pm.variables.get('asa'));//outputs 2


二.如何 在脚本中使用环境变量


1.获取当前环境的名称:


pm.environment.name:String


2.检查环境中是否有指定名称的变量:


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


3. 在当前环境中获取具有指定名称的变量:


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


4. 在当前环境中用指定的名称和值设置变量:


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


5. 使用{{$variableName}}语法返回脚本中动态变量的解析值:


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


例如:


const stringWithVars = pm.environment.replaceIn("I am {{firstName}} and I am {{age}}.");console.log(stringWithVars);


6. 在一个对象中返回当前环境中的所有变量及其值:


pm.environment.toObject():function → Object


7.从当前环境中移除一个变量,按名称指定该变量:


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


8. 清除当前环境中的所有变量:


pm.environment.clear():function


注意,编辑变量的能力取决于工作空间中的访问级别。


三.如何在脚本中使用集合变量


1. 检查集合中是否有指定名称的变量:


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


2. 返回指定名称的集合变量的值:


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


3. 使用指定的名称和值设置集合变量:


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


4. 使用{{$variableName}}语法返回脚本中动态变量的解析值:


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


例如:


//collection has vars firstName and ageconst stringWithVars = pm.collectionVariables.replaceIn("Hi, my name is {{firstName}} and I am {{age}}.");console.log(stringWithVars);


5. 返回所有变量及其值


pm.collectionVariables.toObject():function → Object


6. 从集合中移除指定的变量:


pm.collectionVariables.unset (variableName: String)


7. 清除集合中的所有变量:


pm.collectionVariables.clear()


四.如何在脚本中使用全局变量?


1. 检查是否有指定名称的全局变量:


pm.globals.has (variableName: String)


2.返回指定名称的全局变量的值:


pm.globals.get (variableName: String)


3. 使用指定的名称和值设置全局变量:


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


4.使用{{$variableName}}语法返回脚本中动态变量的解析值:


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


5. 返回一个对象中的所有全局变量及其值:


pm.globals.toObject()


6. 移除指定的全局变量:


pm.globals.unset (variableName: String)


7.清除工作空间中的所有全局变量:


pm.globals.clear()


五.在脚本中使用数据变量


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


pm.iterationData.has (variableName: String)


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


pm.iterationData.get (variableName: String)


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


pm.iterationData.toObject():


4. 将iterationData对象转换为JSON格式:


pm.iterationData.toJSON()


5. 移除指定的变量:


pm.iterationData.unset(key:String)


https://developer.aliyun.com/article/new#ZGF2y


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


1. 使用请求数据编写脚本

1)请求URL:


pm.request.url: Url


2).当前请求的Header列表:


pm.request.headers: HeaderList


3)HTTP请求方法:


pm.request.method


4)请求体中的数据。这个对象是不可变的,不能通过脚本修改:


pm.request.body: RequestBody


5).为当前请求添加一个指定名称和值的头:


pm.request.headers.add(headerkey:HeaderValue)


``6)删除指定名称的请求头:


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


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


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


2. 使用响应数据编写脚本 1)响应状态码:


pm.response.code


2)状态文本字符串:


pm.response.status


3)响应头列表:


pm.response.headers: HeaderList


4)响应接收所需的时间(以毫秒为单位):


pm.response.responseTime


5)收到响应的大小:


pm.response.responseSize


6)响应文本:


pm.response.text()


7)响应JSON,你可以用它来深入到接收到的属性:


pm.response.json()


3.使用请求信息编写脚本


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


1)事件,它将是先决条件或测试,取决于脚本在请求中的执行位置:


pm.info.eventName:


2)当前迭代的值:


pm.info.iteration


3)计划运行的迭代的总数:


pm.info.iterationCount


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


pm.info.requestName


5)一个唯一的GUID,用来标识正在运行的请求:


pm.info.requestId


4. 使用请求cookie编写脚本


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


pm.cookies.has (cookieName: String)


2). 获取指定cookie的值:


pm.cookies.get (cookieName: String)


3). 获取一个对象中所有cookie及其值的副本。返回为请求域和路径定义的所有cookie:\


pm.cookies.toObject()


4)还可以使用pm.cookies.jar来指定访问请求cookie的域。要通过pm.cookies.jar方法实现编程访问,首先要将cookie URL添加到allowlist中。访问cookie jar对象:


pm.cookies.jar()


5)使用名称和值设置cookie:


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


6)使用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}`);  }});


7)从Cookie jar里拿一个Cookie:


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


8)把Cookie jar里的cookie都拿出来。这些cookie可以在回调函数中使用:


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


9)删除一个cookie:


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


10)清除Cookie jar里的所有cookie:


jar.clear(URL:String, callback (error))


七.从脚本发送请求


你可以使用Pm.sendRequest从前置脚本或测试脚本异步发送请求。如果正在执行计算或同时发送多个请求,而无需等待每个请求完成。您可以通过添加回调函数来避免阻塞问题,以便代码可以在Postman收到响应时进行响应。然后,可以对响应数据进行任何处理。你可以通过pm.sendRequest方法提供一个URL字符串,或者可以提供JSON格式的完整请求配置,包括头、方法、正文等等。


//使用普通字符串URL的示例pm.sendRequest('https://postman-echo.com/get', (error, response) => {  if (error) {    console.log(error);  } else {  console.log(response);  }});// Example with a full-fledged requestconst 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 testpm.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');  });});


今天内容比较多。但是在Postman 脚本中确实比较重要。希望大家都认证学习。


如果你也想学习如何使用Postman 工具,欢迎跟着阿萨 一起完成21天打卡学习。

相关文章
|
3天前
|
JavaScript 前端开发
如何在 JavaScript 中使用 __proto__ 实现对象的继承?
使用`__proto__`实现对象继承时需要注意原型链的完整性和属性方法的正确继承,避免出现意外的行为和错误。同时,在现代JavaScript中,也可以使用`class`和`extends`关键字来实现更简洁和直观的继承语法,但理解基于`__proto__`的继承方式对于深入理解JavaScript的面向对象编程和原型链机制仍然具有重要意义。
|
7天前
|
Web App开发 JavaScript 前端开发
如何确保 Math 对象的方法在不同的 JavaScript 环境中具有一致的精度?
【10月更文挑战第29天】通过遵循标准和最佳实践、采用固定精度计算、进行全面的测试与验证、避免隐式类型转换以及持续关注和更新等方法,可以在很大程度上确保Math对象的方法在不同的JavaScript环境中具有一致的精度,从而提高代码的可靠性和可移植性。
|
7天前
|
JavaScript 前端开发 图形学
JavaScript 中 Math 对象常用方法
【10月更文挑战第29天】JavaScript中的Math对象提供了丰富多样的数学方法,涵盖了基本数学运算、幂运算、开方、随机数生成、极值获取以及三角函数等多个方面,为各种数学相关的计算和处理提供了强大的支持,是JavaScript编程中不可或缺的一部分。
|
1月前
|
存储 JavaScript 前端开发
JavaScript 对象的概念
JavaScript 对象的概念
35 4
|
29天前
|
缓存 JavaScript 前端开发
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
29 1
|
30天前
|
存储 JavaScript 前端开发
js中函数、方法、对象的区别
js中函数、方法、对象的区别
15 2
|
1月前
|
JavaScript 前端开发 Unix
Node.js 全局对象
10月更文挑战第5天
21 2
|
1月前
|
存储 JavaScript 前端开发
js中的对象
js中的对象
18 3
|
25天前
|
JavaScript 前端开发 大数据
在JavaScript中,Object.assign()方法或展开语法(...)来合并对象,Object.freeze()方法来冻结对象,防止对象被修改
在JavaScript中,Object.assign()方法或展开语法(...)来合并对象,Object.freeze()方法来冻结对象,防止对象被修改
13 0
|
29天前
|
JavaScript 前端开发 索引
JavaScript中数组、对象等循环遍历的常用方法介绍(一)
JavaScript中数组、对象等循环遍历的常用方法介绍(一)
17 0