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()))