前情描述
公司需要接入企查查开放平台,当拿到接口文档的时候,想要先测试一下接口是否正常使用以及数据质量,通过其接口文档发现,需要在请求头header中添加动态生成的Token和当前时间戳Timespan来进行身份验证,但又不想通过写代码的方式去进行调用,那么需要在PostMan中通过一段JS脚本来解决这个问题。
新建测试环境
打开PostMan,新增一套环境变量
输入环境名字,填写变量名称,如果存在不会改变的全局变量,可以将值写入
initial value(默认值) 和current value(当前值) 中,或Token为动态配置的,可以忽略此步操作,需要通过后续JS赋值
获取调用参数
登录企查查开放平台,获取调用所需的Key和SecretKey
接口调用
按照文档中Token的生成规则:验证加密值 Md5(key+Timespan+SecretKey) 加密的32位大写字符串)
编写JS脚本动态生成Token
将生成的Token放入请求头中
var key = ""; var SecretKey = ""; postman.setGlobalVariable("key",key); //获取当前时间戳 var timestamp = Math.round(new Date().getTime()); var result = timestamp.toString().substring(0,10); postman.setGlobalVariable("timestamp",result); var str = key+result+SecretKey; //使用MD5()方法对变量password的内容加密,然后转成字符串,大写 var strmd5 = CryptoJS.MD5(str).toString().toUpperCase().toString(); postman.setGlobalVariable("strmd5",strmd5) console.log(strmd5)
补充
上述接口Token获取方式比较简单,而在实际开发中会存在另外一些场景
1.存在Token过期需要重新登录的情况
2.重新登陆后又需要在请求中手动复制Token
如果遇到这种情况,可以参考以下方式进行配置
配置登录接口获取动态Token
登录时动态获取Token,并且将Token设置到全局变量中
1.获取response的JSON格式
2.根据返回值的格式,获取到对应的Token,并设置到环境变量中
3.Pre-request Script和Tests区别:
Pre-request Script:在发送请求之前执行
Tests:在发送请求之后执行
//一定要根据实际情况具体去解析 //推荐和前面所讲的环境变量配合使用,不影响其余项目 var data = JSON.parse(responseBody); pm.environment.set("Token", data.result);
将动态Token设置到请求头中
从登录接口获取的Token已设置成全局变量,下一步需要设置到接口的请求头中
//根据自身接口变量平常去配置 //若需要多个请求头参数,直接add多个即可 pm.request.headers.add({ key: "Token", value: pm.environment.get("Token") })
接口调用
配置好之后,再去调用其余接口,也不再需要手动去配置Token了,大大地减少了开发和测试的工作量