我们在自动化测试中经常会需要关联用例处理,需要动态类属性;
推荐使用第二种方法:
创建:setattr()
获取:getattr()
1、容易出错的地方,不能使用全局变量
- 循环导模块的问题, 会报错
- 不能多次导入同一个变量, 变量值不会实时更新
可以进行写入文件或者配置文件
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/ 谢谢!!*******