postman|接口测试 | pre-request script 场景应用
pre-request script 介绍
在过往的工作中,遇到很多测试小伙伴使用 postman 的时候都是直接通过 api 文档的描述请求,检查返回的数据是否正常,很少会用到 pre-request Script 这个功能,甚至也有不少开发的小伙伴也是很少用到这个功能。这个功能类似于 python unittest 里面的 setup 或者是 pytest 里面的 conftest 文件,在执行测试前先执行的函数。
pre-request script 应用
pre-request script 是 postman 执行前的前置条件功能。它能够做到 request 请求前的工作。包括:
对登录验证进行加密或解密
切换环境变量
获取上一个接口的响应值并进行更新
以上都是可以在 pre-request script 功能做的。
postman 执行顺序
首先来讲一下,postman 的执行顺序,其实这个只看一张图就够了。
从 postman 的介绍中,可以知道 postman 执行的顺序会先去到 pre-request script 检查是否有需要执行的前置条件。
pre-request script 场景实践
场景一 : 登录验证加密
现在有一个我们项目中,登录接口是通过 user token 登录的。前端页面需要填写 username 以及 password,再通过 js 进行 MD5 加密处理,最后请求接口验证返回登录状态。
api : /api/login
method : post
headers : token: user_tokenContent-Type: application/json
生成 user_token 方式: username&psaaword 大写
上面就是接口文档说明的,要通过 md5 方式对 username&password 进行加密。那么在 pre-request script 里面,我们可以这样做。
点开环境变量会看到已经生成了 user_token 对应的加密 token 了。
场景二 : 切换环境变量
可能对应这个场景比较少人会用上,但是不得不说,这个场景确实有用。
平时我们切换测试或者产线环境的时候,都是命名不同的环境名称,然后将对应环境的 HOST 填写到环境变量里面去。经常我们会命名这样的:TEST_HOST,PROD_HOST 这样的方式,当我们切换环境的时候,在 request 中改 HOST 即可。
如果我们可以在请求前,可以自动切换不同的 HOST 就更好。
我们可以这样做,首先在 collection 中定义不同环境的 HOST。
其次,我们在 pre-request script 中定义我们的函数
let varbs = new Set()
pm.collectionVariables.values.each(v => {varbs.add(v.key.toUpperCase())
})pm.collectionVariables.values.each(v => {let envVarbKey = [pm.environment.name, v.key].join("_").toUpperCase()if (varbs.has(envVarbKey)) {pm.collectionVariables.set(v.key, pm.collectionVariables.get(envVarbKey))}
});
这里面的意思,就是根据环境名去 variables 中寻找我们对应的 HOST
最终,我们只需要在不同环境中维护 api-key 等参数即可。
场景三 : 获取另外接口的响应值并进行更新
在请求的时候,需要获取到另外一个接口的响应值,并将响应值作为当前 request 的参数。
在这里,pre-request script 不仅仅能写函数,还能写请求函数。
// Refresh the OAuth token if necessary
var tokenDate = new Date(2022,9,3);
var tokenTimestamp = pm.environment.get("OAuth_Timestamp");
if(tokenTimestamp){tokenDate = Date.parse(tokenTimestamp);
}
var expiresInTime = pm.environment.get("ExpiresInTime");
if(!expiresInTime){expiresInTime = 300000; // Set default expiration time to 5 minutes
}if((new Date() - tokenDate) >= expiresInTime)
{pm.sendRequest({url: pm.variables.get("Auth_Url"),method: 'POST',header: {'Accept': 'application/json','Content-Type': 'application/x-www-form-urlencoded','Authorization': pm.variables.get("Basic_Auth")}}, function (err, res) {try{pm.environment.set("OAuth_Token", res.json().access_token);pm.environment.set("OAuth_Timestamp", new Date());// Set the ExpiresInTime variable to the time given in the response if it existsif(res.json().expires_in){expiresInTime = res.json().expires_in * 1000;}pm.environment.set("ExpiresInTime", expiresInTime);}catch(e) {console.log('Unable to load access token from response);}});
}
这里面的函数,主要是通过检索 token 是否过期,重新生成 token 的请求方法。比较简单理解。
1、检查 token 是否过期
2、如果过期,就生成新的 token
3、将新的 token 设置到环境变量,然后记录设置的时间
总结
以上就是这篇文章主要讲的内容,主要是讲解 pre-request script 在工作中的应用场景,希望可以帮助到大家。
扩展
前面说到的加密方式,有很多种,不仅仅是 MD5 加密,同时还有 RSA,AES,bash64 SHA1 等等。
这几种加密方式有什么不同,在这里简单讲一下:
Base64 是一种用64个字符来表示任意二进制数据的方法,这种编码规则是公开的,基本只要有程序能力都能解开,所以请勿用作加密用途,它的作用不在于安全性,而在于让内容能在网络间无错的传输。(常用语编码特殊字符,编码小型二进制文件等)
AES 是对称加密算法,也就是说加密和解密都是采用同一个的密钥。当前最为流行的对称加密算法,这个没有之一。它是如此的常用,以至于很多 CPU 在硬件层面上支持 AES 的加密和解密。AES 是美国政府使用的加密标准,这意味着政府的机密文件大都是用 AES 进行加密的。https 就是使用 AES 来进行数据的加密的,因为 AES 是 TLS 和 SSL 标准的一部分。
RSA 公开密钥加密(public-keycryptography),也称为非对称加密(asymmetriccryptography),一种密码学算法类型,在这种密码学方法中,需要一对密钥,一个是私人密钥,另一个则是公开密钥。这两个密钥是数学相关,用某用户公钥加密后所得的信息,只能用该用户的解密的私钥才能解密。如果知道了其中一个,并不能计算出另外一个。因此如果公开了一对密钥中的一个,并不会危害到另外一个的秘密性质。称公开的密钥为公钥;不公开的密钥为私钥。这种通常我们在 github 上会用到。
MD5、SHA1 都是不可逆的,防篡改的,用来校验数据真伪的,不是用来加密数据的。
现在我邀请你进入我们的软件测试学习交流群:【
746506216
】,备注“入群”, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路。
喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一 键三连哦!
postman|接口测试 | pre-request script 场景应用相关推荐
- Postman接口测试工具实战演练集
文章目录 一.前言 二.Postman工具介绍 三.Postman工具下载安装 四.Postman工具使用 五.Postman工具之接口测试 5.1 接口测试的必要条件 5.2 常见请求与传参 5.3 ...
- PostMan接口测试(很全面的接口测试教程)
一:理论部分 1. 前言 在前后端分离开发时,后端工作人员完成系统接口开发后,需要与前端人员对接,测试调试接口,验证接口的正确性可用性.而这要求前端开发进度和后端进度保持基本一致,任何一方的进度跟不上 ...
- 全网最牛最全的Postman接口测试工具 接口自动化测试最全实用教程
温馨提醒:本文超过10000+字,适用测试工程师入门postman工具进行接口测试,建议收藏慢慢看~~ 视频教程:年入58w的测试开发讲解的全套postman接口测试 接口自动化测试全套教程_哔哩哔哩 ...
- Postman接口测试工具学习笔记(二)Postman进阶实践:获取天气预报实例
Postman接口测试工具学习笔记(一) 入门及基本概念 https://blog.csdn.net/sevensolo/article/details/87208546 Postman进阶实践:获取 ...
- Postman接口测试基础和实战(1)
Postman 接口测试定义 定义:接口测试是针对软件对外提供服务的接口的输入输出进行测试,以及接口间相互逻辑的测试,验证接口功能与接口描述文档的一致性. 优点:通常对系统测试更为彻底,更好保障产品质 ...
- 测试工具 - Postman接口测试入门使用手册,Postman如何进行数据关联、自动更新cookies、简单编程
Postman 接口测试 前言 一.工具安装 ① 获取工具 ② 账号登录 ③ 抓包工具获取 二.接口测试 ① 创建一个目录 ② 编写脚本 ③ 抓取请求 ④ 填写用例头部 ⑤ 填写用例主体内容 ⑥ 测试 ...
- Postman接口测试工具学习笔记(一)接口测试概念及Postman入门
(下文照搬@Storm啊老师博文,留下记录为了方便学习和理解.大家可以去看看原文地址:https://blog.csdn.net/duzilonglove/article/details/786454 ...
- postman接口测试中文汉化教程
小编热衷于收集整理资源,记录踩坑到爬坑的过程.希望能把自己所学,实际工作中使用的技术.学习方法.心得及踩过的一些坑,记录下来.也希望想做软件测试的你一样,通过我的分享可以少走一些弯路,可以形成一套自己 ...
- Postman接口测试工具超详细-接口关联-接口自动化测试教程实例
一.postman插件安装 备注:postman也是有软件进行下载的,但是是需要进行FQ下载的,故自行下载安装.本节讲述的是插件的安装以及简单实用.postman是Chrome的一个接口测试插件,故如 ...
- Postman接口测试脚本编写规范
Postman接口测试脚本编写规范 1.前言 2.名词解释 3.接口测试脚本规范 3.1接口测试脚本编写的规范 3.2 Postman使用规范 4.单个接口测试 5.整个流程的开发过程 1.前言 本规 ...
最新文章
- 敏捷团队迭代交付能力计算模型
- FauxPas试用时间破解
- python字符串大写字母个数_python判断字符串是字母 数字 大小写(转载)
- 软件测试中英文词汇汇总
- Java内部抽象类的匿名类初始化
- vs2013 编译 notepad++ 源代码 2014-7-23
- 在c语言中039是不是int型,C数据类型
- Maximum Element In A Stack 数据结构
- 01-subgradients_notes
- matlab里输出恒压的逆变器,基于IGBT逆变器的异步电机变频调速系统的MATLAB仿真...
- 女方父母总是插手家里的事怎么办?
- Windows Server 2012 R2 VDI系列(四)—创建虚拟桌面集合
- 【问题解决方案】Markdown正文中慎用星号否则容易变斜体
- python求x的y次方logn_次方计算器
- 安装完成后打开CAXACAD时出现的找不到mfc100u.dll等无法执行的问题
- 2.13navigation导航系统
- Maya测量尺寸python脚本Mesh Resizer
- 交叉熵损失函数权重计算
- VR家装丨足不出户就能“浸”距离体验入住效果
- 通过环境变量形式指定Datagrip的datagrip64.exe.vmoptions位置
热门文章
- AD9 设置网络标号作用域 (NET 全局)
- RH850F1x Starter Kit V3用户手册(中文翻译版)
- libxml2交叉编译
- 202007219 Oracle建表语句
- 有限元法 有限差分法 有限体积法
- 戴文的Linux内核专题:22 配置内核 (18)
- 计算机指数函数符号,常用数学符号大全(注音及注解)
- c语言中的符号总结,C语言中的符号总结
- 网上购物html5 sqlserver,网上购物商城系统的设计与实现(SQLServer)
- 3.4 常用数据类型的输入 [原创Excel教程]