ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

pytest运行时记录操作步骤的简单实现

2020-03-27 22:55:09  阅读:251  来源: 互联网

标签:__ stepname 记录 args pytest func kwargs 操作步骤 装饰


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内置方法,与函数装饰器一致

标签:__,stepname,记录,args,pytest,func,kwargs,操作步骤,装饰
来源: https://blog.51cto.com/11463754/2482573

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有