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 场景应用相关推荐

  1. Postman接口测试工具实战演练集

    文章目录 一.前言 二.Postman工具介绍 三.Postman工具下载安装 四.Postman工具使用 五.Postman工具之接口测试 5.1 接口测试的必要条件 5.2 常见请求与传参 5.3 ...

  2. PostMan接口测试(很全面的接口测试教程)

    一:理论部分 1. 前言 在前后端分离开发时,后端工作人员完成系统接口开发后,需要与前端人员对接,测试调试接口,验证接口的正确性可用性.而这要求前端开发进度和后端进度保持基本一致,任何一方的进度跟不上 ...

  3. 全网最牛最全的Postman接口测试工具 接口自动化测试最全实用教程

    温馨提醒:本文超过10000+字,适用测试工程师入门postman工具进行接口测试,建议收藏慢慢看~~ 视频教程:年入58w的测试开发讲解的全套postman接口测试 接口自动化测试全套教程_哔哩哔哩 ...

  4. Postman接口测试工具学习笔记(二)Postman进阶实践:获取天气预报实例

    Postman接口测试工具学习笔记(一) 入门及基本概念 https://blog.csdn.net/sevensolo/article/details/87208546 Postman进阶实践:获取 ...

  5. Postman接口测试基础和实战(1)

    Postman 接口测试定义 定义:接口测试是针对软件对外提供服务的接口的输入输出进行测试,以及接口间相互逻辑的测试,验证接口功能与接口描述文档的一致性. 优点:通常对系统测试更为彻底,更好保障产品质 ...

  6. 测试工具 - Postman接口测试入门使用手册,Postman如何进行数据关联、自动更新cookies、简单编程

    Postman 接口测试 前言 一.工具安装 ① 获取工具 ② 账号登录 ③ 抓包工具获取 二.接口测试 ① 创建一个目录 ② 编写脚本 ③ 抓取请求 ④ 填写用例头部 ⑤ 填写用例主体内容 ⑥ 测试 ...

  7. Postman接口测试工具学习笔记(一)接口测试概念及Postman入门

    (下文照搬@Storm啊老师博文,留下记录为了方便学习和理解.大家可以去看看原文地址:https://blog.csdn.net/duzilonglove/article/details/786454 ...

  8. postman接口测试中文汉化教程

    小编热衷于收集整理资源,记录踩坑到爬坑的过程.希望能把自己所学,实际工作中使用的技术.学习方法.心得及踩过的一些坑,记录下来.也希望想做软件测试的你一样,通过我的分享可以少走一些弯路,可以形成一套自己 ...

  9. Postman接口测试工具超详细-接口关联-接口自动化测试教程实例

    一.postman插件安装 备注:postman也是有软件进行下载的,但是是需要进行FQ下载的,故自行下载安装.本节讲述的是插件的安装以及简单实用.postman是Chrome的一个接口测试插件,故如 ...

  10. Postman接口测试脚本编写规范

    Postman接口测试脚本编写规范 1.前言 2.名词解释 3.接口测试脚本规范 3.1接口测试脚本编写的规范 3.2 Postman使用规范 4.单个接口测试 5.整个流程的开发过程 1.前言 本规 ...

最新文章

  1. 敏捷团队迭代交付能力计算模型
  2. FauxPas试用时间破解
  3. python字符串大写字母个数_python判断字符串是字母 数字 大小写(转载)
  4. 软件测试中英文词汇汇总
  5. Java内部抽象类的匿名类初始化
  6. vs2013 编译 notepad++ 源代码 2014-7-23
  7. 在c语言中039是不是int型,C数据类型
  8. Maximum Element In A Stack 数据结构
  9. 01-subgradients_notes
  10. matlab里输出恒压的逆变器,基于IGBT逆变器的异步电机变频调速系统的MATLAB仿真...
  11. 女方父母总是插手家里的事怎么办?
  12. Windows Server 2012 R2 VDI系列(四)—创建虚拟桌面集合
  13. 【问题解决方案】Markdown正文中慎用星号否则容易变斜体
  14. python求x的y次方logn_次方计算器
  15. 安装完成后打开CAXACAD时出现的找不到mfc100u.dll等无法执行的问题
  16. 2.13navigation导航系统
  17. Maya测量尺寸python脚本Mesh Resizer
  18. 交叉熵损失函数权重计算
  19. VR家装丨足不出户就能“浸”距离体验入住效果
  20. 通过环境变量形式指定Datagrip的datagrip64.exe.vmoptions位置

热门文章

  1. AD9 设置网络标号作用域 (NET 全局)
  2. RH850F1x Starter Kit V3用户手册(中文翻译版)
  3. libxml2交叉编译
  4. 202007219 Oracle建表语句
  5. 有限元法 有限差分法 有限体积法
  6. 戴文的Linux内核专题:22 配置内核 (18)
  7. 计算机指数函数符号,常用数学符号大全(注音及注解)
  8. c语言中的符号总结,C语言中的符号总结
  9. 网上购物html5 sqlserver,网上购物商城系统的设计与实现(SQLServer)
  10. 3.4 常用数据类型的输入 [原创Excel教程]