zoukankan      html  css  js  c++  java
  • Python 中使用动态创建类属性的机制实现接口之后的依赖

      我们在自动化测试中经常会需要关联用例处理,需要动态类属性;

    推荐使用第二种方法:

      创建:setattr()
      获取:getattr()

    1、容易出错的地方,不能使用全局变量

    1. 循环导模块的问题, 会报错
    2. 不能多次导入同一个变量, 变量值不会实时更新

      可以进行写入文件或者配置文件

    2、两种,如何创建 类属性 loan_id

    # 第一种,动态创建
    # 类名.属性名 = 具体的属性值
    Context.loan_id = mysql_data.get('Id')    # 动态创建类属性
    
    # 第二种,创建 setattr(译:赛特attr)
    # 如果第一个参数为实例对象, 那么将会为这个实例对象, 创建实例属性
    # 如果第一个参数为类, 那么将会创建类型属性
    # 第二个参数为属性名的字符串
    # 第三个参数为具体的属性值
    setattr(Context, "loan_id", mysql_data.get('Id'))       # setattr(译:赛特attr)
    
    
    @classmethod
    def loan_id_replace(cls, data):
        if re.search(cls.loan_id_pattern, data):    # 如果不查找可以直接替换
            # 第一种,动态获取
            # loan_id = Context.loan_id
            # data = re.sub(cls.loan_id_pattern, loan_id, data)
    
            # 第二种:获取用 getattr(译:给特attr) 获取这个类当中的 loan_id 类属性的 值
            # 如果第一个参数为实例对象 或 类
            # 第二个参数为属性名的字符串
            loan_id = str(getattr(Context, "loan_id"))  # 我们获取的 loan_id 是int类型需要转换
            data = re.sub(cls.loan_id_pattern, loan_id, data)
        return data

    其他情况:https://www.cnblogs.com/xiaogongjin/p/11906585.html

    *******请大家尊重原创,如要转载,请注明出处:转载自:https://www.cnblogs.com/shouhu/   谢谢!!******* 

  • 相关阅读:
    Java集合学习(8):LinkedList
    Java集合学习(7):ArrayList
    Java集合学习(6):LinkedHashSet
    数据结构与算法19—排序
    ZooKeeper基本介绍
    Java集合学习(5):LinkedHashMap
    Java集合学习(4):HashTable
    Java集合学习(3):HashSet
    java集合学习(2):Map和HashMap
    HTML DOM的创建,删除及替换
  • 原文地址:https://www.cnblogs.com/shouhu/p/12153211.html
Copyright © 2011-2022 走看看