下面介绍一下在postman中,一些脚本的常见用法:

  • responseBody

等价于response.text,表示接口请求的响应体,类型为string,如果返回的字符串是json格式的,可以使用JSON.parse()进行解析。

curl --location --request POST 'http://8.129.162.225:8082/account/login?username=demo&password=demo'
var type = typeof responseBody  // 得到的值是string类型
var res = JSON.parse(responseBody)
console.log( type,res.msg,res.data.token)

  • pm.response

等价于response对象,包含Body、Code、Status、Cookies、Headers等内容。

  • 响应结果断言

// 检查接口请求的状态是否为200
pm.test("请求状态码验证", function () {pm.response.to.have.status(200);
});
// 检查接口响应结果中的内容是否正确(返回json时)
pm.test("返回结果内容断言", function () {var jsonData = pm.response.json();pm.expect(jsonData.msg).to.eql('成功');pm.expect(jsonData.code).to.eql(20000 );
});
// 其他方法: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()pm.response.to.have.jsonBody(optionalExpectEqual:Object)pm.response.to.have.jsonBody(optionalExpectPath:String)pm.response.to.have.jsonBody(optionalExpectPath:String, optionalValue:*)

在pm.test()中写入的名称,在测试报告中和输出的时候会体现是哪个环节的校验结果,添加类似jenkins中pipeline的这种step的描述的话,有助于在报告中体现的会更加详细,知道具体是哪一种断言不通过,Test Results中的显示如下:

  • pm对象

pm对象在浏览器中使用网页版以及桌面版都可以使用。(书上说浏览器插件无法使用,应该是以前低版本不支持,现在浏览器搜不到那个插件了,可以直接打开网页使用:https://web.postman.co/home)

pm.info.eventName:用来获取当前是在Pre-request Script还是Tests中执行的脚本,返回的是字符串“prerequest” 或 “test”。

pm.info.iteration:它用来显示当前运行迭代的次数(从0开始)

pm.info.iterationCount:返回迭代运行的总次数

pm.info.requestName:用于返回请求名,对应postman上请求的名称

pm.info.requestId:用于返回请求ID

  • pm.sendRequest对象

允许异步发送HTTP/HTTPS请求。

① 该方法接受一个兼容SDK的请求和一个回调。回调接收两个参数,其中一个错误(如果有的话),另一个是SDK兼容的响应。

② 该方法可以在预请求或测试脚本中使用。

// 以普通字符串URL为例pm.sendRequest('https://postman-echo.com/get', function (err, res) {if (err) {console.log(err);} else {pm.environment.set("variable_key", "new_value");}});// 使用完整的SDK请求为例const echoPostRequest = {url: 'https://postman-echo.com/post',method: 'POST',header: 'headername1:value1',body: {mode: 'raw',raw: JSON.stringify({ key: 'this is json' })}};pm.sendRequest(echoPostRequest, function (err, res) {console.log(err ? err : res.json());});// pm.test只能在Tests选项卡下使用pm.sendRequest('https://postman-echo.com/get', function (err, res) {if (err) { console.log(err); }pm.test('response should be okay to process', function () {pm.expect(err).to.equal(null);pm.expect(res).to.have.property('code', 200);pm.expect(res).to.have.property('status', 'OK');});});
  • 环境变量、变量相关的操作

pm.globals对象包含以下方法可供调用:pm.globals.has(variableName:String) → booleanpm.globals.get(variableName:String) pm.globals.set(variableName:String, variableValue:String)pm.globals.unset(variableName:String)pm.globals.clear()pm.globals.toObject() pm.environment对象包含以下方法可供调用:pm.environment.has(variableName:String) → booleanpm.environment.get(variableName:String) pm.environment.set(variableName:String, variableValue:String)pm.environment.unset(variableName:String) pm.environment.clear() pm.environment.toObject() pm.variables对象:pm.variables.get(variableName:String)
在使用的时候,要注意变量的优先级,尽量不要在全局变量、环境变量、
集合脚本中出现命名相同的变量。
  • 其他脚本介绍

pm.request与pm.response :请求与响应信息,打印这两个对象可以看到请求和响应的具体参数之类的。

pm.iterationData对象:包含数据集运行期间提供的数据文件

pm.cookies对象:cookies的相关信息

  • pm.response.to.be.*  可以通过预定义的规则直接断言

pm.response.to.be.info,检查响应码是否为1××,如果是则断言为真,否则为假。
pm.response.to.be.success,检查响应码是否为2××,如果是则断言为真,否则为假。
pm.response.to.be.redirection,检查响应码是否为3××,如果是则断言为真,否则为假。
pm.response.to.be.clientError,检查响应码是否为4××,如果是则断言为真,否则为假。
pm.response.to.be.serverError,检查响应码是否为5××,如果是则断言为真,否则为假。
pm.response.to.be.error,检查响应码是否为4××或者5××,如果是则断言为真,否则为假。
pm.response.to.be.ok,检查响应码是否为200,如果是则断言为真,否则为假。
pm.response.to.be.accepted,检查响应码是否为202,如果是则断言为真,否则为假。
pm.response.to.be.badRequest,检查响应码是否为400,如果是则断言为真,否则为假。
pm.response.to.be.unauthorized,检查响应码是否为401,如果是则断言为真,否则为假。
pm.response.to.be.forbidden,检查响应码是否为403,如果是则断言为真,否则为假。
pm.response.to.be.notFound,检查响应码是否为404,如果是则断言为真,否则为假。
pm.response.to.be.rateLimited,检查响应码是否为429,如果是则断言为真,否则为假。

以上脚本可以直接单独使用某一行就行,运行后直接具备断言的效果,会直接在报告中体现是成功还是断言失败:

END

往期推荐

Jmeter使用技巧分享--fiddler导出jmeter脚本

Fiddler抓包工具使用小技巧

HTTP协议Header选项解读

HTTP协议请求方法和状态码介绍

HTTPS协议下Fiddler抓包

HTTP协议压缩格式和URL编码介绍

初探HTTP协议和Fiddler抓包原理

Fiddler Everywhere之AutoResponder功能详解

Fiddler Everywhere v1.0.1版本基础功能介绍

Postman教程-Pre-request Script和Tests脚本进阶相关推荐

  1. Postman教程大全

    推荐一款接口测试工具!POSTMAN! 简单来说,四个词,简单实用大方美观! Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件 Postman背景介绍 用户在开发或者调试 ...

  2. Postman 教程使用详解:如何安装和使用 Postman 进行 API 测试

    什么是Postman? Postman 是一个可扩展的 API 测试工具,可快速集成到 CI/CD 管道中.它于2012年作为Abhinav Asthana的一个副项目开始,旨在简化测试和开发中的AP ...

  3. Postman教程系列

    系列文章首发平台为果冻想个人博客.果冻想,是一个原创技术文章分享网站.在这里果冻会分享他的技术心得,技术得失,技术人生.我在果冻想等待你,也希望你能和我分享你的技术得与失,期待. Postman教程- ...

  4. 深入比特币原理(四)——锁定脚本(locking script)与解锁脚本(unlocking script)

    通常比特币都是以虚拟货币的概念出现在大众眼前,实际上比特币是第一个真正的区块链"平台",利用它去中心化.不可篡改.可追溯等特点不光可以实现多种交易模式(如点对点交易.多重签名交易等 ...

  5. Script Insertion -客户端脚本植入攻击

    实验目的与要求 了解客户端脚本植入攻击的方式 掌握防范攻击的方法 预备知识 所谓客户端脚本植入( Script Insertion)攻击,是指将可以执行的脚本插入到表单.图片.动画或超链接文字等对象内 ...

  6. 教程:Nodejs大漠插件开发游戏脚本实战(二)搭建项目

    一.使用nvm-windows安装Nodejs 上一篇文章我们说过我们需要用到32位的Nodejs,而且因为一些特殊原因,我们要用到指定的版本.为了不影响我们其他项目的开发,这里用到一个Nodejs的 ...

  7. 嵌入式物联网【数据处理篇】特殊字符处理(Postman 400 Bad Request)

    目录 一.Postman 400 Bad Request 二.C语言特殊字符处理 三.QU

  8. 【Shell脚本进阶】从此彻底搞懂 Linux 环境变量及 Shell 启动文件 /etc/profile 、 ~/.bash_profile 和 ~/.bashrc(建议收藏)

    文章目录 1. 环境变量详解 1.1 全局环境变量 1.2 本地环境变量 1.3 自定义环境变量 1.3.1 自定义本地环境变量 1.3.2 自定义全局环境变量 1.4 删除环境变量 2. 启动文件详 ...

  9. 【Python脚本进阶】2.3、利用FTP与Web批量抓“ 肉机”(终)

    前言: 介绍: 博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章). 殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员,edus ...

最新文章

  1. java生成和读取keystore_Java程序员必知:mybaties运行流程
  2. C# 获取电脑的网络连接状态
  3. 开发日记-20190531 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》
  4. 字符串基本操作 c语言,数据结构C语言字符串的基本操作.doc
  5. 针对谷歌浏览器Chrome的CSS hack
  6. scala学习手记28 - Execute Around模式
  7. spark异常 - Null value appeared in non-nullable field
  8. 大橙子_橙子皮养花太棒了,酸性大,肥力足,比花肥强10倍
  9. iPad网页开发教程及规则
  10. 巧用vim+sed整理shell脚本文件
  11. xyplorer保存设置失败_腾讯企点客服如何设置敏感词监控?
  12. 黑马程序员-java-基础《一》
  13. 非IE内核浏览器支持activex插件
  14. 华为2019实习生专业面试经历——通信算法工程师
  15. 2)美国佬与才女薛涛的共同点
  16. html 透明的圆形,CSS3 花蝴蝶形状的3D透明圆球旋转变幻
  17. Android Studio的安装 环境搭建
  18. 监视资本主义:智能陷阱
  19. golang 获取一天前,一个月前,一年前的日期
  20. 理解伪类选择器与伪元素选择器

热门文章

  1. 世界主要港口中英文对照表
  2. 智慧工地具有哪些社会意义?
  3. 【毕业设计】 stm32智能运动计步系统 - 物联网 嵌入式 单片机
  4. 编程语言常见符号合集分享
  5. 骆昊python100天 github_GitHub - zsfz/Python-100-Days: Python - 100天从新手到大师
  6. 在Java 17中偏向锁可算废了
  7. Unity 水体浮力的实现
  8. Cadence Allegro 17.4学习记录开始06-PCB Editor 17.4快捷键的说明和中英文的切换和操作界面放大缩小设置
  9. ofd文件怎么编辑?speedpdf免费转Word解决修改难题
  10. 用标志域tag判断队空队满的入队和出队算法