pytest運行時記錄操作步驟的簡單實現

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


裝飾器函數說明:裝飾器用於記錄操作步驟,在相關的代碼上進行裝飾,用於後續的分析


裝飾器簡介:裝飾器分爲函數裝飾器和類裝飾器,裝飾器可帶參數和不帶參數其中func參數代表真正被裝飾的方法


不帶參數裝飾器:


def my_decorator(func):
   def wrapped(*args**kwargs):
       func(*args**kwargs)
   return wrapped


帶參數的裝飾器請參考上方的裝飾器必須實現 __call__ 和 __init__兩個內置函數,

其中在__init__ (self,func)添加func參數

(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內置方法,與函數裝飾器一致

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章