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