专业的编程技术博客社区

网站首页 > 博客文章 正文

在测试接口的时候,还在为token过期郁闷?

baijin 2025-01-02 14:17:17 博客文章 6 ℃ 0 评论

apiFox是一个比较好的国内开发的,接口测试和管理工具。

为了方便接口测试,我们可以通过设置token,来自动获取并填充到接口请求中。

实现过程是,通过前置操作,创建公共脚本模拟登陆,获取token,放入变量中,然后设置当前项目的Auth,这样就可以实现每次调用接口自动登陆获取最新token了。

在项目概览中,增加全局脚本:

选择“公共脚本”

点击“管理公共脚本”:

选择新建后,填写脚本内容:

  //   body 里面的参数需要自己设置对应的
 // 定义发送登录接口请求方法
 function sendLoginRequest() {
     // 获取环境里的 前置URL
     // const baseUrl = pm.environment.get('BASE_URL');
     // 登录用户名,这里从环境变量 LOGIN_USERNAME 获取,也可以写死(但是不建议)
     // const username = pm.environment.get('LOGIN_USERNAME');
     // 登录用户名,这里从环境变量 LOGIN_PASSWORD 获取,也可以写死(但是不建议)
     // const password = pm.environment.get('LOGIN_PASSWORD');
     // 构造一个 POST x-www-form-urlencoded 格式请求。这里需要改成你们实际登录接口的请求参数。
     const loginRequest = {
         url: 'http://localhost:8080/sbimes/sys/login',
         method: 'POST',
         // 若 body 为 x-www-form-urlencoded 格式,mode 为 'urlencoded'
         // body: {
         //     mode: 'urlencoded',
         //     urlencoded: [
         //         { key: 'account', value: username },
         //         { key: 'password', value: password }
         //     ]
         // }
         /*
        // 若 body 为 form-data 格式,mode 为 'formdata'
        body: {
          mode: 'formdata',
          formdata: [
            { key: 'account', value: username },
            { key: 'password', value: password }
          ]
        }*/
       /*
       header: {
            "Content-Type": "application/json", // 注意:如果选择json格式,header 需要加上 Content-Type
        },
       */
         // 若 body 为 raw 或 json 格式,mode 为 'raw'
         body: {
             mode: 'raw',
             raw: JSON.stringify(
                { 
                     "username":"admin",
                     "password":"123456",
                     "captcha":"",
                     "checkKey":""})
        }
 
    };
 
     // 发送请求。 
     // pm.sendrequest 参考文档: https://www.apifox.cn/help/app/scripts/api-references/pm-reference/#pm-sendrequest
     pm.sendRequest(loginRequest, function (err, res) {
         if (err) {
             console.log(err);
        } else {
             // 读取接口返回的 json 数据。
             // 如果你的 token 信息是存放在 cookie 的,可以使用 res.cookies.get('token') 方式获取。 
             // cookies 参考文档:https://www.apifox.cn/help/app/scripts/api-references/pm-reference/#pm-cookies
             const data = JSON.parse(res);
             // 将 accessToken 写入环境变量 ACCESS_TOKEN
           //这个是写到全局变量中
             pm.globals.set('token', data.result.token);
           
           //这个是写到当前的环境变量中
           //pm.globals.set('token', data.result.token);
             
        }
    });
 }
 
 // 获取环境变量里的 ACCESS_TOKEN
 const token = pm.globals.get('token');
 
 // 获取环境变量里的 ACCESS_TOKEN_EXPIRES
 // const accessTokenExpires = pm.environment.get('ACCESS_TOKEN_EXPIRES');
 
 // 如 ACCESS_TOKEN 没有值,或 ACCESS_TOKEN_EXPIRES 已过期,则执行发送登录接口请求
 if (!token) {
     sendLoginRequest();
 }
 

保存后,回到“项目概览”页面

类型:设置成使用的Auth格式,我在这里使用的是:Bearer Token;

Token:设置成上面pm.globals.set('token', data.result.token);中设置的名称“token”

结束

好了,试一下项目下的接口,是不是可以获取到对应的token了?如果有问题,那么在运行接口的时候可以通过控制台,看到脚本中console.log(“”);的日志内容。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表