Postman环境变量设置小技巧
不同的测试环境要如何设置环境变量才能用的更方便?不同的测试环境要怎么方便切换请求token?我的方法可能不是最优,但解决了我目前的实际需要,希望能有帮助.
之前使用环境变量时,将环境URL写在environment中,不同的环境写了一堆其实只有环境变化的URL,每次增加个URL就需要把所有环境的变量都更新一下.总觉得自己用的不太对.
原本的设想是在globals中设置URL,然后每个环境设置自己的头,调用的时候组合使用.这也产生了一个新的问题,原有的脚本挺多的,每个URL都要增加一个变量非常的麻烦,想说直接在globals中组合使用,非常尴尬,不能在globals中用environment的变量.这方案只能放弃.
寻思了一下,还是尝试了组合的方案,但是把组合后的url放在environment中.这样原来的名字也不用变,切换环境也非常的方便.
也顺带着,把每个环境的token判断是否需要清除,是否需要重新请求.重新生成这个测试环境的URL都处理了一下~
根据测试环境生成URL
我在globals中设置了一个变量,version默认为0.在每个环境的environment中也增加了标记不同环境的URL开头,增加version默认为空,来判断这个这个环境的URL是否需要更新.类似给globals增加了个版本号
在collection的pre-request Script脚本中增加脚本去维护更新环境URL
如果globals新增了URL,我就会把version版本号加1.脚本判断如果这个变量和environment的版本不一致,就会去把所有的URL重新生成一下.
if(pm.environment.get("version") != pm.globals.get("version")){
var nemes = Object.keys(pm.globals.toObject())
for(var i = 1; i < nemes.length;i++){
pm.environment.set(nemes[i] + "Url", pm.environment.get("sys") + pm.globals.get(nemes[i]))
}
pm.environment.set("version",pm.globals.get("version"))
}
//得说一下,这个写法不严谨,我是把version放在第一个,所以默认跳过0.其实应该写个判断更合适
根据当前环境判断是否需要重新请求token
我把脚本需要token的方法,都写在了collection或者f'older的Pre-request Script脚本里.token也存在了collection变量里.如果切换环境,经常忘了要清空变量,重新换个token,就很麻烦.
在collection变量中增加了sys,表明当前token是在哪个环境生成的.让collection的sys与environment的sys相同.根据两者的值判断是否是一个环境.如果不是就再生成一遍.
if (pm.collectionVariables.get("sys") != pm.environment.get("sys")){
pm.collectionVariables.set("sys", pm.environment.get("sys"))
pm.collectionVariables.set("tokenDate","")
}
我还有个逻辑是根据token生成日期去判断是否需要再生成一个token,所以就只把tokenDate置空就可以了.