python 判断token是否有效,若失效,重新发起token请求

场景:

1、对一个接口,进行接口自动化测试,查找的是有权限操作的用例,传入到获取token接口,生成token,判断当前是否有token,如果存在token,则无需再次发起token接口;

存在的问题:

1、对于可以在token有效期,即两个小时内,可以跑完的用例,不会出现token失效的情况,如果用例较多,不能保证是否能在两个小时跑完,就会出现token失效,导致用例失败的情况

 

针对这个问题,做了token有效性的判断:

1、获取token的时候,可以获取到当前的时间,以及token返回的有效时间,获取到token的同时,取token接口返回的

expires_in时间

2、使用 成功获取到token的时间 + expires_in= 得到token失效的时间,再和接口使用到token的当前时间比较,如果当前时间< token失效的时间,即判断token有效,无需重新发起token接口,否则,重新发起,生成token接口

3、结合类的属性,将成功获取token的时间,保存到类的属性值里面

    def token_is_effictive(self, type="memu", module=None):
        '''
        【判断当前token是否有效】会判断是否有token的有效时间,若无,则调起生成token接口,若有,则和当前时间比较,若大于token有效时间,则重新获取token
        :param type: 查询用户的类型
        :param module: 具体的菜单
        :return:
        '''
        # com_obj.login_token_effective_time = 1651129017  调试将有效时间改成过期
        now_time = int(time.time())
        if not hasattr(com_obj, "login_token_effective_time"):
            self.token_is_exist(type=type, module=module)
        else:
            # 判断当前时间是否大于token的有效时间
            if now_time > com_obj.login_token_effective_time:
                delattr(com_obj, "token")  # 如果token过期,将过期的token值删掉,重新调起token方法
                self.token_is_exist(type=type, module=module)
            else:
                logger.info("{0}_当前token有效".format(communFun.get_function_name()))

 

posted on 2022-05-06 11:24  刚刚好1  阅读(2066)  评论(0编辑  收藏  举报

导航