Postman 提供的Javascript 对象有哪些?

简介: Postman 提供的Javascript 对象有哪些?

大家好,我是阿萨。 昨天介绍了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 run
console.log(pm.variables.get('asa'));//outputs 2
console.log(pm.collectionVariables.get('asa'));//outputs 1
console.log(pm.environment.get('asa'));//outputs 2
 //second request run
pm.variables.set('asa', 3);//local var
console.log(pm.variables.get('asa'));//outputs 3
 //third request run
console.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)



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


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}`);
  }
});, 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 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');
  });
});


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

相关文章
|
3天前
|
存储 JavaScript 索引
js开发:请解释什么是ES6的Map和Set,以及它们与普通对象和数组的区别。
ES6引入了Map和Set数据结构。Map的键可以是任意类型且有序,与对象的字符串或符号键不同;Set存储唯一值,无重复。两者皆可迭代,支持for...of循环。Map有get、set、has、delete等方法,Set有add、delete、has方法。示例展示了Map和Set的基本操作。
17 3
|
16天前
|
JavaScript
JS 获取对象数据类型的键值对的键与值
JS 获取对象数据类型的键值对的键与值
|
26天前
|
JavaScript 前端开发
Math对象:JavaScript中的数学工具
Math对象:JavaScript中的数学工具
27 1
N..
|
1月前
|
存储 JavaScript 前端开发
JavaScript中的对象
JavaScript中的对象
N..
10 0
|
19天前
|
JavaScript 算法
原生JS完成“一对一、一对多”矩形DIV碰撞检测、碰撞检查,通过计算接触面积(重叠覆盖面积)大小来判断接触对象DOM
原生JS完成“一对一、一对多”矩形DIV碰撞检测、碰撞检查,通过计算接触面积(重叠覆盖面积)大小来判断接触对象DOM
|
5天前
|
JavaScript 前端开发 开发者
JavaScript中的错误处理:try-catch语句与错误对象
【4月更文挑战第22天】JavaScript中的错误处理通过try-catch语句和错误对象实现。try块包含可能抛出异常的代码,catch块捕获并处理错误,finally块则无论是否出错都会执行。错误对象提供关于错误的详细信息,如类型、消息和堆栈。常见的错误类型包括RangeError、ReferenceError等。最佳实践包括及时捕获错误、提供有用信息、不忽略错误、利用堆栈信息和避免在finally块中抛错。
|
11天前
|
JavaScript
【Js】检查Date对象是否为Invalid Date
【Js】检查Date对象是否为Invalid Date
14 0
|
11天前
|
存储 JavaScript 前端开发
JavaScript的引用数据类型主要包括对象
【4月更文挑战第16天】JavaScript的引用数据类型主要包括对象
17 4
|
16天前
|
JavaScript
js 字符串String转对象Object
该代码示例展示了如何将一个以逗号分隔的字符串(`'1.2,2,3,4,5'`)转换为对象数组。通过使用`split(',')`分割字符串并`map(parseFloat)`处理每个元素,将字符串转换成浮点数数组,最终得到一个对象数组,其类型为`object`。
|
24天前
|
存储 JavaScript 前端开发
在浏览器中存储数组和对象(js的问题)
在浏览器中存储数组和对象(js的问题)
10 0