from com.chanpin.initialize.Start import Primary # 公共全局对象 step_record = [] # 列表,用于记录全部的步骤值 def func_runstep(stepname): """ :param stepname 操做说明,请不要包含‘开始执行’ 记录操做步骤的装饰器 """ __driver = Primary.driver """ 真正实现的函数,该装饰器能够添加接收参数stepname """ def my_decorator(func): def wrapped(*args, **kwargs): if "开始执行步骤" in stepname: Primary.Log.warn("操做步骤内容存在‘开始执行步骤’,请不要出现该值,以避免影响后续的操做判断") Primary.Log.info("开始执行步骤:" + stepname + "。方法名为:" + func.__name__) step_record.append(stepname) return func(*args, **kwargs) return wrapped return my_decorator
装饰器函数说明:装饰器用于记录操做步骤,在相关的代码上进行装饰,用于后续的分析python
装饰器简介:装饰器分为函数装饰器和类装饰器,装饰器可带参数和不带参数其中func参数表明真正被装饰的方法app
不带参数装饰器:ide
def my_decorator(func): def wrapped(*args**kwargs): func(*args**kwargs) return wrapped
带参数的装饰器请参考上方的装饰器必须实现 __call__ 和 __init__两个内置函数,函数
其中在__init__ (self,func)添加func参数code
(func): ._func = func
在__call__(self,*args, **kwargs) 方法中实现装饰操做对象
(*args**kwargs): : Log.info() ._func(*args**kwargs) e: Log.error(sys._getframe().f_code.co_name + + e.())
其中类装饰器也能够带参数,操做能够在__init__()添加参数值便可,在__call__中添加wrapper内置方法,与函数装饰器一致get