Postman断言写法以及脚本pm对象

2024-08-22 15:28

本文主要是介绍Postman断言写法以及脚本pm对象,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

pm对象

pm对象包含与正在执行的脚本有关的所有信息,并允许访问正在发送的请求的副本或接受到的响应,它还允许获取和设置环境变量和全局变量

pm.info对象

pm.info对象包含与正在执行的脚本有关的信息,如请求名称、请求ID和迭计数等有用信息储存在该对象中

方法描述
pm.info.eventName输出脚本是在哪个脚本栏中执行的
pm.info.iteration输出当前运行迭代的次数(从0开始)
pm.info.iterationCount输出计划运行的迭代总数
pm.info.requestName返回请求名
pm.info.requestId返回请求ID

在这里插入图片描述

pm.sendRequest对象

pm.sendRequest对象允许异步发送HTTP/HTTPS请求。pm.sendRequest()方法接收两个参数,一个URL(请求信息)和一个函数;函数又接收两个参数:第一个URL参数的响应(错误和正确响应),Postman内部将第一个URL参数的响应赋值给两个变量err,res(即err,res就是脚本请求的错误响应或正确响应,如果要对脚本请求的响应进行处理的话,就可以使用err,res来处理)

发送请求并进行断言

pm.sendRequest("url",function(err,res){if(err){console.log(err);}else{pm.test("断言描述",function(){pm.expect(err).to.equal(null);pm.expect(res).to.have.property("code",200);})}
})

pm.globals对象

方法描述
pm.globals.has(“variableName”)验证是否存在该全局变量
pm.globals.get(“variableName”)获取执行全局变量的值
pm.globals.set(“variableName”,“variableValue”)设置全局变量
pm.globals.unset(“variableName”)清除指定的全局变量
pm.globals.clear()清除全部全局变量
pm.globals.toObject()将全局变量以一个对象的方式全部输出

在这里插入图片描述

pm.environment对象

方法描述
pm.environment.has(“variableName”)检测环境变量是否包含某个变量
pm.environment.get(“variableName”)获取环境变量中的某个值
pm.environment.set(“variableName”,“variableValue”)为某个环境变量设置值
pm.environment.unset(“variableName”)清除某个环境变量
pm.environment.clear()清除全部环境变量
pm.environment.toObject()将环境变量以一个对象的方式全部输出

在这里插入图片描述

pm.request对象

方法描述
pm.request获取当前发起请求的全部headers
pm.request.url获取当前发起请求的url
pm.request.headers以数组的方式返回当前请求中的header信息

在这里插入图片描述

pm.response对象

方法描述
pm.response.code获取当前请求返回的状态码如200,404,500等
pm.response.reason()当前请求成功返回OK
pm.response.headers以数组的形式返回当前请求成功后的response的headers
pm.response.responseTime获取执行此次请求的时间单位为ms
pm.response.text()以文本的方式获取响应里面的body的内容
pm.response.json()将body里面的内容解析为一个json对象

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

pm.cookies对象

pm.cookies对象包含一个与请求所创建的域相关联的Cookies列表

方法描述
pm.cookies.has(“cookieName”)检查请求的url站点是否存在cookie,返回值Boolean
pm.cookies.get(“cookieName”)获取存在的cookie的值
pm.cookies.toObject()将请求的url站点中获取到的所有存在的cookie输出到一个对象中去

在这里插入图片描述

Postman中的Test

在Postman中用于测试、断言的函数主要有如下

方法描述
pm.test(“testName”,specFunction)测试方法,第二个方法中填写测试内容
pm.expect(assertion:*)断言

pm.test()方法用于创建一个测试。接受两个参数,一个是测试的相关描述,另外一个是一个回调函数,用来执行断言相关的语句

pm.expect是一个通用的断言函数。用来处理响应或变量的数据断言。

e.g

pm.test("status code is 200",function(){pm.response.to.have.statue(200);
})

pm.response.to.be 对象

Postman提供的测试脚本响应断言包含以下API:pm.response.to

方法描述
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()判断响应结果是否包含 json 格式的消息体
pm.response.to.have.jsonBody(optionalExpectEqual:Object)判断响应结果是否包含指定对象的 json 格式消息体
pm.response.to.have.jsonBody(optionalExpectPath:String)判断响应结果是否包含指定层级的 json 格式消息体
pm.response.to.have.jsonBody(optionalExpectPath:String, optionalValue:*)判断响应结果是否包含指定路径并且值也匹配的 json 格式消息体
pm.response.to.have.jsonSchema(schema:Object)判断响应结果是否符合指定的 json 结构;schema 参数是以对象形式描述的 json 结构
pm.response.to.have.jsonSchema(schema:Object, ajvOptions:Object)判断响应结果是否符合指定的 json 结构;schema 参数是以对象形式描述的 json 结构并且附加 ajv 库的操作

e.g

var json = {"access_token" : String,"expires_in":String
}pm.test("响应体的结构符合", function(){pm.response.to.have.jsonSchema(json)
})

在这里插入图片描述

测试脚本中的响应断言API

Postman常用的八种断言写法

pm.test("检查返回状态码为200",function(){pm.response.to.have.status(200);
})
pm.test("检查返回的结果中包含指令字符串",function(){//响应体body是否包含access_tokenpm.expect(pm.response.test()).to.include("access_token");
})
pm.test("检查json中其中一个字段的值"function(){var jsonData = pm.response.json();pm.expect(jsonData.字段名).to.eql(7200);
})
pm.test("检查返回的值等于一个指定的字符串",function(){pm.response.to.have.body('{"errcode":0,"errmsg":"ok"}');
})
pm.test("检查是否包含响应头Content-Type",function(){pm.response.to.have.header("Content-Type")
})
pm.test("检查请求耗时小于300ms",function(){pm.expect(pm.response.responseTime).to.be.below(300);
})
pm.test("检查返回的状态码是否在数组中",function(){pm.expect(pm.response.code).to.be.oneOf([200, 202]);
})
pm.test("检查状态信息是指定的字符串",function(){pm.response.to.have.status("OK")
})

附录

// console.log(responseBody);
// var jsobj = JSON.parse(responseBody)
// // console.log(jsobj.access_token)
// pm.globals.set("token", jsobj.access_token);  // pm.test("检查返回的结果中包含token字符串", function () {
//     pm.expect(pm.response.text()).to.include("access_token");
// });// console.log("response:",pm.response)
// console.log("request:",pm.request);
// pm.test("Response time is less than 200ms", function () {
//     pm.expect(pm.response.responseTime).to.be.below(200);
// });//  输出脚本是在哪个脚本栏中执行的
// console.log(pm.info.eventName);//  输出当前运行迭代的次数(从0开始)
// console.log(pm.info.iteration)// 输出计划运行的迭代总数
// console.log(pm.info.iterationCount)// 返回请求名
// console.log(pm.info.requestName)// 返回请求ID 
// console.log(pm.info.requestId)// 验证是否存在此全局变量
// console.log(pm.globals.has("token"))// 获取该全局变量的值
// console.log(pm.globals.get('token'))// 设置全局变量
// pm.globals.set("token","value")// 清除指定的全局变量
// pm.globals.unset("token");// 清除全部的全局变量
// pm.globals.clear();// 将全局变量以一个对象的方式全部输出
// console.log(pm.globals.toObject());// 检测环境变量是否包含某个变量
// console.log(pm.environment.has("test"));// 获取环境变量中的某个值
// console.log(pm.environment.get("test"))// 为某个环境变量设置值
// pm.environment.set("test","testValue");//  清除某个环境变量
// pm.environment.unset("test");// 清除全部环境变量
// pm.environment.clear();// 将环境变量以一个对象的方式全部输出
// console.log(pm.environment.toObject());// pm.request对象
// console.log(pm.request)// 获取当前发起请求的url
// console.log(pm.request.url)// 以数组的方式返回当前请求中的header信息
// console.log(pm.request.headers)// pm.response对象
// console.log(pm.response);// 获取当前请求返回的状态码
// console.log(pm.response.code)// 当前请求成功返回OK
// console.log(pm.response.reason())// 以数组的形式返回当前请求成功后的response的headers
// console.log(pm.response.headers)// 获取执行此次请求的时间单位为ms
// console.log(pm.response.responseTime)// 以文本的方式获取响应里面的body的内容
// console.log(pm.response.text())// 将body里面的内容解析为一个json对象
// console.log(pm.response.json());// pm.cookies对象
// console.log(pm.cookies)// 检查请求的url站点是否存在cookie,返回值Boolean
// console.log(pm.cookies.has("cookieName"))// 获取存在的cookie的值
// console.log(pm.cookies.get("cookieName"));// 将请求的url站点中获取到的所有存在的cookie输出到一个对象中去
// console.log(pm.cookies.toObject("cookieName"))// 检测响应体的结构是否正常
/*
var json = {"access_token" : String,"expires_in":String
}pm.test("响应体的结构符合", function(){pm.response.to.have.jsonSchema(json)
})
*/

这篇关于Postman断言写法以及脚本pm对象的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1096660

相关文章

Java使用ANTLR4对Lua脚本语法校验详解

《Java使用ANTLR4对Lua脚本语法校验详解》ANTLR是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件,下面就跟随小编一起看看Java如何使用ANTLR4对Lua脚本... 目录什么是ANTLR?第一个例子ANTLR4 的工作流程Lua脚本语法校验准备一个Lua Gramm

Python中判断对象是否为空的方法

《Python中判断对象是否为空的方法》在Python开发中,判断对象是否为“空”是高频操作,但看似简单的需求却暗藏玄机,从None到空容器,从零值到自定义对象的“假值”状态,不同场景下的“空”需要精... 目录一、python中的“空”值体系二、精准判定方法对比三、常见误区解析四、进阶处理技巧五、性能优化

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

Java实现将byte[]转换为File对象

《Java实现将byte[]转换为File对象》这篇文章将通过一个简单的例子为大家演示Java如何实现byte[]转换为File对象,并将其上传到外部服务器,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言1. 问题背景2. 环境准备3. 实现步骤3.1 从 URL 获取图片字节数据3.2 将字节数组

Javascript访问Promise对象返回值的操作方法

《Javascript访问Promise对象返回值的操作方法》这篇文章介绍了如何在JavaScript中使用Promise对象来处理异步操作,通过使用fetch()方法和Promise对象,我们可以从... 目录在Javascript中,什么是Promise1- then() 链式操作2- 在之后的代码中使

MyBatis的配置对象Configuration作用及说明

《MyBatis的配置对象Configuration作用及说明》MyBatis的Configuration对象是MyBatis的核心配置对象,它包含了MyBatis运行时所需的几乎所有配置信息,这个对... 目录MyBATis配置对象Configuration作用Configuration 对象的主要作用C

通过Python脚本批量复制并规范命名视频文件

《通过Python脚本批量复制并规范命名视频文件》本文介绍了如何通过Python脚本批量复制并规范命名视频文件,实现自动补齐数字编号、保留原始文件、智能识别有效文件等功能,听过代码示例介绍的非常详细,... 目录一、问题场景:杂乱的视频文件名二、完整解决方案三、关键技术解析1. 智能路径处理2. 精准文件名

SpringBoot实现导出复杂对象到Excel文件

《SpringBoot实现导出复杂对象到Excel文件》这篇文章主要为大家详细介绍了如何使用Hutool和EasyExcel两种方式来实现在SpringBoot项目中导出复杂对象到Excel文件,需要... 在Spring Boot项目中导出复杂对象到Excel文件,可以利用Hutool或EasyExcel