postman中的pre-request script

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_token
Content-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 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 的请求方法。比较简单理解。

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 都是不可逆的,防篡改的,用来校验数据真伪的,不是用来加密数据的。

### 回答1: Postman的pre-request脚本是在发送请求之前执行的脚本。它可以用来设置请求头、请求参数、环境变量等。在pre-request脚本,可以使用JavaScript语言编写代码,通过Postman提供的API来操作请求和环境变量。pre-request脚本的执行结果会影响到请求的发送和响应的返回。 ### 回答2: Postman是一款非常著名的API测试工具。它的pre-request script功能可以帮助用户在发送请求之前将请求参数进行必要的处理,并且可以对请求做一些自定义的验证和处理,从而提高测试效率和测试质量。下面将详细介绍一下postmanpre-request script的相关特性。 Pre-request script功能在Postman的位置 在使用Postman软件进行API测试时,我们可以看到左侧导航栏有一个tab为Pre-request Scripts。点击该tab,就可以在其输入对应的脚本代码。 Pre-request script脚本语言 Postman支持JavaScript脚本语言,用户可以在Pre-request Scripts编写JavaScript代码。由于JavaScript语言简单易学,所以使用该功能并不需要过多学习成本,文的资料也比较丰富。 Pre-request script脚本运行流程 Pre-request script脚本是在请求发送之前执行的,可以用来进行请求参数的处理和一些自定义的验证处理。其运行流程如下: 1、用户在Pre-request Scripts编写脚本代码。 2、在向API服务器发送请求之前,软件将执行用户编写的Pre-request script代码。 3、请求参数经过预处理后,执行用户配置的请求。 Pre-request script脚本使用 对于Pre-request script脚本的使用,主要可以分为以下几个步骤: 1、对请求参数进行预处理:可以根据接口需要自定义请求参数,并且进行筛选、过滤、组合等操作。 2、自定义验证逻辑:在请求发送前可以对请求参数、请求头进行自定义验证,比如判断参数的完整性、格式是否正确等。 3、设置全局变量:可以通过Pre-request script脚本,在请求发送前将一些变量进行设置和处理。 4、动态修改请求参数:可以通过Pre-request script自动将请求参数进行动态修改以便满足测试过程的需要。 总结 Pre-request script功能是Postman的重要功能之一,它可以用来对请求参数进行预处理,自定义验证逻辑,设置全局变量以及动态修改请求参数等操作,帮助用户更好的完成API测试。使用该功能可以提高测试效率和测试质量,建议开发或测试人员多加尝试。 ### 回答3: Postman是一种流行的API开发工具,可以帮助开发人员创建、测试和调试API。Postman有许多有用的功能,其一个是pre-request脚本(预请求脚本)功能。pre-request脚本可以在发送请求之前运行任意JavaScript代码。在这篇文章,我们将探讨pre-request脚本是什么、如何工作以及如何使用它。 pre-request脚本指的是在请求发送前执行的JavaScript代码。例如,假设您正在测试一个API,该API需要基于请求的内容生成一个验证令牌。在这种情况下,您可以使用pre-request脚本来生成令牌,并将其作为请求头的一部分发送到API。这意味着每次发送请求时,令牌将被动态地生成,而不是手动键入每个令牌。 pre-request脚本十分灵活,可以用于各种用例。以下是一些常见的用例: 1. 设置环境变量:您可以使用pre-request脚本来设置环境变量。例如,您可以设置一个环境变量,在请求期间将其设置为某个特定值。这对于在测试期间设置调试标志或在不同的测试环境之间进行切换非常有用。 2. 创建动态数据:您可以使用pre-request脚本来动态生成或计算请求的一部分。例如,您可以使用Math.random()函数在请求头生成一个随机数。 3. 处理OAuth验证: pre-request脚本可以用于处理OAuth验证。通过运行代码以生成令牌,您可以在发送请求之前轻松地验证身份。 使用pre-request脚本的优势是它可以节省时间和精力,减少手动步骤,提高效率。同时,它也使测试更加准确和可靠,因为代码是由机器自动执行。否则可能由手动步骤引入错误。 在Postman,pre-request脚本十分容易使用。打开您的请求,然后单击“预请求脚本”选项卡。可以在该选项卡查看、编辑和执行脚本。你可以用JavaScript代码声明全局变量,以便可以在整个测试用例重复使用。当你提交请求时,脚本将在此之前自动运行。 总之,pre-request脚本是一个重要的Postman功能,可以用于生成动态数据、处理验证和设置环境变量等多种用例。它易于使用,可提高开发人员的效率,并减少手动步骤所带来的错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值