思路
请求需要登录授权的接口,就意味着你要传token给接口,所以请求接口(要测试的接口)之前就要先获取token,因为登录成功后服务端才会返回token,而token又设置了时效,所以每次请求接口(要测试的接口)前最好能自动获取到最新的token,那么只能每次请求需要登录授权的接口之前先请求登录接口,这样才能保证每次获取到最新的token。获取到token后再请求需要登录授权的接口。
步骤
-
配置环境变量token
-
请求接口界面authorization的类型选择bearer token,取环境变量token的值,写法如图所示:
如果还需要传其它参数,则根据不同请求方式在不同的地方设置参数值,例如请求方式为”post“,则在body内设置好参数,如图所示:
-
在pre-request script 中写JS脚本,访问登录接口,获取token,再赋值给环境变量”token“,具体参考以下脚本代码
//构造登录请求
const loginRequest = {url: 'http://ip地址/project_name/manage/login',method: 'POST',header: 'Content-Type: application/json', //注意要在Header中声明内容使用的类型body: {mode: 'raw', // 使用raw(原始)格式raw: JSON.stringify({ account:'sys',password:'123456' }) //要将JSON对象转为文本发送}
};//发送请求
pm.sendRequest(loginRequest, function (err, response) {if(err){//err返回null,则对应的boolean值是falseconsole.log(err);}else{// console.log(err);// console.log(response.text());var jsonData = response.json();//返回json对象console.log("jsonData",jsonData);//赋值给jsonData,再打印输出到控制台var token = jsonData.data.token;//jsonData的data属性也是个json对象,该对象有token属性console.log("token",token);// console.log("textData",response.text())pm.environment.set("token", token);//赋值给环境变量token}
});
登录密码如果要加密怎么办
var password = pm.environment.get("password");var md5Password= CryptoJS.MD5(password).toString();//使用MD5()方法对变量password的内容加密,然后转成字符串// pm.environment.set("password",md5Password);//加密后的密码字符串赋值给环境变量password//构造登录请求const loginRequest = {url: 'https://www.xxx.com/xxx/manage/login',method: 'POST',header: 'Content-Type: application/json', //注意要在Header中声明内容使用的类型body: {mode: 'raw', // 使用raw(原始)格式raw: JSON.stringify({ account:'admin',password:md5Password}) //要将JSON对象转为文本发送}
};//发送请求
pm.sendRequest(loginRequest, function (err, response) {if(err){//err返回null,则对应的boolean值是falseconsole.log(err);}else{// console.log(err);// console.log(response.text());var jsonData = response.json();//返回json对象console.log("jsonData",jsonData);//赋值给jsonData,再打印输出到控制台var token = jsonData.data.token;//jsonData的data属性也是个json对象,该对象有token属性console.log("token",token);// console.log("textData",response.text())pm.environment.set("token", token);//赋值给环境变量token}
});