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/   谢谢!!******* 

原文地址:https://www.cnblogs.com/shouhu/p/12153211.html