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

devtools/2024/9/24 12:52:50/

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)
})
*/

http://www.ppmy.cn/devtools/98188.html

相关文章

string的模拟实现

前言 为了加深对string类的理解,本节我们来学习一下string类的模拟实现,那么废话不多说,我们正式进入今天的学习。 (模拟实现的所有函数我都做了声明和定义分离,但其实string的构造等一些短小而频繁调用的函数其实可以…

xss GAME (xss漏洞攻击1-8)

目录 xss网页链接 第一关 第二关 第三关 ​编辑第四关 ​编辑第五关 ​编辑第六关 第七关 第一种 Function构建函数 第二种 tostring parseInt 第三种 silce() ​编辑第八关(安全过滤框架 dom破坏) xss网页链接 XSS Game - Learning XSS Ma…

嵌入式和单片机有什么区别?

目录 (1)什么是嵌入式? (2)什么是单片机? (3)嵌入式和单片机的共同点 (4)嵌入式和单片机的区别 (1)什么是嵌入式? 关…

Oracle基本SQL操作-用户角色权限管理

一、用户权限管理 -- 创建锁定用户,此时用户不可用 create USER zhucl IDENTIFIED BY 123456 account lock; 会提示用户被锁定: -- 删除用户 drop user zhucl;-- 重新创建用户,不锁定 create user zhucl IDENTIFIED BY 123456 account unlo…

XSS game复现(DOM型)

目录 1.Ma Spaghet! 2.Jefff 3.Ugandan Knuckles 4.Ricardo Milos 5.Ah Thats Hawt 6.Ligma 7.Mafia 8.Ok, Boomer 1.Ma Spaghet! 通过简单的尝试发现传递参数可以直接进入h2标签 接下来我们尝试传入一个alert(1) 可以看到并没有触发。原因是在innerHTML中官方禁用了sc…

产品经理原型设计工具 Axure 的使用

原型设计工具 Axure 中文学习网:https://www.axure.com.cn/ 1、安装 2023年Axure RP9最新安装、汉化教程(附带安装包下载) 2、基本使用 Axure rp9入门图文教程——基操及介绍(看完就能上手,人人都是产品经理&#x…

Jenkins 2.346.1完整搭建及项目部署安装

java version "1.8.0_202" 1.安装 官网下载war包直接启动,比较简单, linux命令 : wget https://mirrors.jenkins.io/war-stable/2.346.1/jenkins.war 2.启动命令 nohup java -jar jenkins.war --httpPort8777 --prefix/jenkin…

千元护眼台灯自用体验:书客、明基、柏曼护眼台灯哪个好?

现在长时间面对屏幕已经成为许多人的日常,晚上玩手机看书会感觉到眼睛容易疲惫不舒服,最终还是决定入手一台护眼台灯。市面上护眼台灯的品牌款式众多,了解一番后我挑选了几款口碑比较好的护眼台灯,书客、明基和柏曼,我…