Postman教程-Pre-request Script和Tests脚本的介绍
前面章节解决了“请求本身”的问题,但“请求前后的动作”是怎样处理的呢?比如在发送一个请求前,需要获取当前时间戳,这就需要用到Pre-request Script的知识了。另外,似乎还忽略了一个非常重要的知识点,请求返回响应后,如何自动判断响应是否正确呢?这就需要用到Tests的知识。本章将重点介绍Pre-request Script和Tests的相关知识。
对于单个请求而言,两个脚本执行顺序:
Pre-request Script:在发送请求之前执行
Tests:在发送请求之后执行
站在集合角度,执行顺序如下:
① 与集合相关的Pre-request Script脚本将在集合中的每个请求之前运行。
② 与文件夹相关联的Pre-request Script脚本将在文件夹中的每个请求之前运行。
③ 与集合相关的Tests脚本将在集合中的每个请求之后运行。
④ 与文件夹关联的Tests脚本将在该文件夹中的请求之后运行。
集合和文件夹也能设置脚本,这点我之前没关注过:
因此可以得出结论:
集合级脚本>文件夹级脚本>请求级脚本 {优先级从高->低}
Pre-request Script脚本的使用场景:
一般用来在发送请求之前对数据进行一些预处理,比如获取当前时间戳、随机数之类的用于接口传参。
常见的函数以及用法有:
pm.environment.get("variable_key");
pm.globals.get("variable_key");
pm.variables.get("variable_key");
pm.collectionVariables.get("variable_key");
pm.environment.set("variable_key", "variable_value");
pm.globals.set("variable_key", "variable_value");
pm.collectionVariables.set("variable_key", "variable_value");
pm.environment.unset("variable_key");
pm.globals.unset("variable_key");
pm.collectionVariables.unset("variable_key");
pm.sendRequest("https://postman-echo.com/get", function (err, response) {console.log(response.json());
});
说明:
postman中的自己编写的脚本目前一般是只支持用js,但是你可以通过其他的方式去间接的嵌入python脚本, postman在Pre-request Script脚本中是可以发送请求的,那么你可以把写的python或者其他语言的脚本发布为api的接口,然后在postman中以接口的形式去进行调用。
Tests脚本使用场景:
Postman工具借助测试脚来帮助用户自动判断接口请求是否正确,相当于Load Runner工具中的检查点或者JMeter中的断言功能。
列举结果最基础的断言里面常用的函数:
//检查响应状态是不是200
pm.test("Status code is 200", function () {pm.response.to.have.status(200);
});//检查返回结果会否包含某个字符串
pm.test("Body matches string", function () {pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});//响应时间会否小于200毫秒
pm.test("Response time is less than 200ms", function () {pm.expect(pm.response.responseTime).to.be.below(200);
});
官网上,一些脚本的使用案例,感兴趣的可以自己学习:
https://learning.postman.com/docs/writing-scripts/script-references/test-examples/
英文文档并不可怕,一些简单的英文单词什么的还是应该要能够看懂的。
往期推荐
Postman教程-变量、集合的基本使用
Postman教程-通过设置代理/拦截器捕获请求信息
Postman教程-Response相关的基本操作
Postman教程-Send Requests相关的基本操作
Postman教程-接口测试流程&发送第一个请求
Postman+Newman+Git+Jenkins实现接口自动化测试持续集成
2020年小博公众号文章集锦
给大家分享一下在长沙租房子的经历
Postman教程-Pre-request Script和Tests脚本的介绍相关推荐
- Postman教程-Pre-request Script和Tests脚本进阶
下面介绍一下在postman中,一些脚本的常见用法: responseBody 等价于response.text,表示接口请求的响应体,类型为string,如果返回的字符串是json格式的,可以使用J ...
- Postman教程大全
推荐一款接口测试工具!POSTMAN! 简单来说,四个词,简单实用大方美观! Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件 Postman背景介绍 用户在开发或者调试 ...
- Postman 教程使用详解:如何安装和使用 Postman 进行 API 测试
什么是Postman? Postman 是一个可扩展的 API 测试工具,可快速集成到 CI/CD 管道中.它于2012年作为Abhinav Asthana的一个副项目开始,旨在简化测试和开发中的AP ...
- Postman教程系列
系列文章首发平台为果冻想个人博客.果冻想,是一个原创技术文章分享网站.在这里果冻会分享他的技术心得,技术得失,技术人生.我在果冻想等待你,也希望你能和我分享你的技术得与失,期待. Postman教程- ...
- 深入比特币原理(四)——锁定脚本(locking script)与解锁脚本(unlocking script)
通常比特币都是以虚拟货币的概念出现在大众眼前,实际上比特币是第一个真正的区块链"平台",利用它去中心化.不可篡改.可追溯等特点不光可以实现多种交易模式(如点对点交易.多重签名交易等 ...
- Script Insertion -客户端脚本植入攻击
实验目的与要求 了解客户端脚本植入攻击的方式 掌握防范攻击的方法 预备知识 所谓客户端脚本植入( Script Insertion)攻击,是指将可以执行的脚本插入到表单.图片.动画或超链接文字等对象内 ...
- 教程:Nodejs大漠插件开发游戏脚本实战(二)搭建项目
一.使用nvm-windows安装Nodejs 上一篇文章我们说过我们需要用到32位的Nodejs,而且因为一些特殊原因,我们要用到指定的版本.为了不影响我们其他项目的开发,这里用到一个Nodejs的 ...
- 嵌入式物联网【数据处理篇】特殊字符处理(Postman 400 Bad Request)
目录 一.Postman 400 Bad Request 二.C语言特殊字符处理 三.QU
- iOS 9应用开发教程之创建iOS 9项目与模拟器介绍
iOS 9应用开发教程之创建iOS 9项目与模拟器介绍 编写第一个iOS 9应用 本节将以一个iOS 9应用程序为例,为开发者讲解如何使用Xcode 7.0去创建项目,以及iOS模拟器的一些功能.编辑 ...
- Unity3D【Mono Develop脚本编辑器介绍】
Mono Develop脚本编辑器介绍 Unity3D目前支持三种语言的脚本,包括c#.JavaScript.Boo,在一个游戏中开发者可以使用一种或者同时使用多种语言来实现脚本的控制. 三种不同的语 ...
最新文章
- HP小型机的信息的命令集(一)
- 建议转变编程时的思维习惯改为:忽略细节关扰,直指问题核心,追寻问题关键。...
- 九度OJ 区间问题
- 航电 2041 超级楼梯
- jquery对radio的操作汇总
- [NOI2016]循环之美(杜教筛)
- WeChall_Training: Register Globals
- 前端学习(1678):前端系列实战课程之声明和创建游戏地图
- Python档案袋( 命令行操作 及 Os与Shutil文件操作补充 )
- java应用程序的执行起点是什么方法_Java应用程序的执行起点是____________方法。(3.0分)_学小易找答案...
- thinkphp v5.0.11漏洞_thinkphp 5.0 代码执行漏洞
- latex 公式编号_放弃mathtype,word也可以轻松输入公式
- [转载] python列表解释(list comprehension)记录
- 编译器的差别gcc和VS
- SqList *L 和 SqList * L的一些理解以及多重指针的简单应用
- 通俗易懂解释信源编码与信道编码的区别与联系
- windows7修改或删除曾经保存的远程桌面连接的密码
- 谁没有迟疑 彷徨的时候 --leo谈应届生求职 1
- 传统图片超分算法——双三次插值 (Bicubic)、附C++源码
- FFmpeg之sws_scale库的应用(sws_getContext、sws_scale、sws_freeContext)