Postman 提供的Javascript 对象有哪些?

388 阅读4分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第7天,点击查看活动详情

大家好,我是阿萨。 昨天介绍了Postman的前置操作是干什么的?有同学反馈说对Postman 提供的javascript 对象不熟悉,希望介绍下。今天这一篇文章就专门给大家介绍下。

Postman提供了可以在请求脚本中使用的JavaScript api。pm对象提供了测试请求和响应数据的功能,同时还有变量设置方法。
Postman的API 都是pm.* 提供的。 所以所有的脚本开头是pm 开头的。
一。脚本中变量的使用方法
pm对象提供了访问全局变量、集合变量和环境变量以及pm的方法。变量方法用于访问不同作用域的变量和设置局部变量。
1. 检查当前范围内是否有Postman变量:

pm.variables.has(variableName:String):functionBoolean

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():functionObject


变量范围决定了当你引用变量时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):functionBoolean


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():functionObject


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

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


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

pm.environment.clear():function


注意,编辑变量的能力取决于工作空间中的访问级别。
三.  如何在脚本中使用集合变量
1. 检查集合中是否有指定名称的变量:\

pm.collectionVariables.has(variableName:String):functionBoolean


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():functionObject

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)):FunctionObject

6)使用PostmanCookie或兼容对象设置cookie:

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

例如:

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)):FunctionObject

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天打卡学习。