核心内容摘要
暗黑爆料·cn暗黑爆料
点击文末小卡片免费获取软件测试全套资料资料在手涨薪更快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_token Content-Type: application/json生成 user_token 方式 usernamepsaaword 大写上面就是接口文档说明的要通过 md5 方式对 usernamepassword 进行加密。
那么在 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,
; 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 exists if(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 的请求方法。
比较简单理解。
检查 token 是否过期
如果过期就生成新的 token
将新的 token 设置到环境变量然后记录设置的时间
总结以上就是这篇文章主要讲的内容主要是讲解 pre-request script 在工作中的应用场景希望可以帮助到大家。
扩展前面说到的加密方式有很多种不仅仅是 MD5 加密同时还有 RSAAESbash64 SHA1 等等。
这几种加密方式有什么不同在这里简单讲一下Base64 是一种用64个字符来表示任意二进制数据的方法,这种编码规则是公开的基本只要有程序能力都能解开所以请勿用作加密用途它的作用不在于安全性而在于让内容能在网络间无错的传输。
(常用语编码特殊字符编码小型二进制文件等)AES 是对称加密算法也就是说加密和解密都是采用同一个的密钥。
当前最为流行的对称加密算法这个没有之一。
它是如此的常用以至于很多 CPU 在硬件层面上支持 AES 的加密和解密。
AES 是美国政府使用的加密标准这意味着政府的机密文件大都是用 AES 进行加密的。
https 就是使用 AES 来进行数据的加密的因为 AES 是 TLS 和 SSL 标准的一部分。
RSA 公开密钥加密public-keycryptography也称为非对称加密一种密码学算法类型在这种密码学方法中需要一对密钥一个是私人密钥另一个则是公开密钥。
这两个密钥是数学相关用某用户公钥加密后所得的信息只能用该用户的解密的私钥才能解密。
如果知道了其中一个并不能计算出另外一个。
因此如果公开了一对密钥中的一个并不会危害到另外一个的秘密性质。
称公开的密钥为公钥不公开的密钥为私钥。
这种通常我们在 github 上会用到。
MD
SHA1 都是不可逆的防篡改的用来校验数据真伪的不是用来加密数据的。
最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走这些资料对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你凡事要趁早特别是技术行业一定要提升技术功底。