首页 > 其他分享 >Postman断言写法以及脚本pm对象

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

时间:2024-08-22 11:29:44浏览次数:11  
标签:console log 响应 test pm 写法 response Postman

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

标签:console,log,响应,test,pm,写法,response,Postman
From: https://blog.csdn.net/weixin_53249168/article/details/141422273

相关文章

  • Fedora Linux 41 推出多版本 Kubernetes RPM,灵活性大大增加!
    随着FedoraLinux41的即将发布,Kubernetes管理员和企业用户将迎来一个令人振奋的功能更新:多版本KubernetesRPM。这一创新举措标志着Fedora在Kubernetes打包策略上的重大转变,为容器化环境提供了更大的灵活性和控制能力。在容器化技术日益普及的今天,Kubernetes已......
  • postman实操
    一、postman参数化1、{{变量名}}花括号,时两个括号在环境变量中设置变量参数,作用于所有的接口设置变量:当前所有的接口都可以调用这个参数get中设置变量:http://cms.duoceshi.cn/manage/loginJump.do?userAccount={{u1}}&loginPwd={{p1}}二、断言test中的内容详解:常用......
  • SAP EWM PMR
    目录1简介2业务流程3业务操作4主数据设置4.1ERP主数据4.2EWM主数据5后台配置5.1主数据5.2GI流程5.3仓库内部移动流程5.4 仓库任务设置5.5集成5.6EWM链接1简介EWMPMR分2部分功能,第一是MES-DrivenStaging,第二是AdvancedProductionIn......
  • 两种,统计各个方法的执行时间的写法
    publicclassT1{@Testvoidtest01(){longstartTime=System.currentTimeMillis();log.info("方法1开始执行,开始时间:{}",startTime);method01();longendTime=System.currentTimeMillis();log.info("方法1执......
  • 高通pmic voter机制
    前不久在高通SDM450平台接触了voter机制(投票机制)。最近终于得空,结合一个问题简单研究了一下。现将研究流程简单记录一下,由于时间有限,所以是实用为目的,没有做详细的分析,不过结合着这篇分析和源码一起参考,应该能快速地应用voter做一些事情。voter=====第一步是找到voter的......
  • Postman中Body添加注释后请求报错问题解决【保姆级教程!!!】
    本文介绍关于Postman中Body添加注释后请求报错问题解决方法如:请求返回下述报错操作失败!系统异常,JsonParseException:Unexpectedcharacter(‘/’(code47)):maybea(non-standard)comment?(notrecognizedasonesinceFeature‘ALLOW_COMMENTS’notenabled......
  • Centos7使用RPM包安装Oracle21c数据库(EE)
    Centos7使用RPM包安装Oracle21c数据库(EE)官方下载链接21c标准版安装包信息:文件名:LINUX.X64_213000_db_home.zip(64-bit)(3,109,225,519bytes)(sha256sum-c05d5c32a72b9bf84ab6babb49aee99cbb403930406aabe3cf2f94f1d35e0916)21cxe版安装包信息:文件名:oracle-data......
  • Centos7使用RPM包安装Oracle21c数据库(XE)
    Centos7使用RPM包安装Oracle21c数据库(XE)官方下载链接21c标准版安装包信息:文件名:LINUX.X64_213000_db_home.zip(64-bit)(3,109,225,519bytes)(sha256sum-c05d5c32a72b9bf84ab6babb49aee99cbb403930406aabe3cf2f94f1d35e0916)21cxe版安装包信息:文件名:oracle-data......
  • 图片热区。vue3+ts和vue3+js写法(js没写完数据,功能完善)2
    不知道为啥我上一篇的图片热区被移出首页,其实我主要是是为了自己看,其次才是分享,这段时间我又整理了一下热区,将里面的功能进一步完善了一下;解决一下问题:1.解决拖拽到规定区域外后松开鼠标再次进入后,坐标错误的问题2.新增6个方向的拖拽放大缩小热区区域3.新增放大了图片区域4.......
  • postman
    1、postman介绍   主要基础配置   collections接口请求   APIsapi文档   Environments环境配置(测试环境、线上环境、开发环境等)   Mockservers桩程序(前后端分离,前端已经开发好了,后端还没有,那么就可以自定义一个mockserver服务器,前端)    ......