接口自动化之数据隔离

简单记录一下数据共享问题

在我们用main文件执行所有用例时,配置文件中的配置是所有用例都会用到的数据,我们将配置文件中的配置信息作为Environment这个类的类属性,而每个执行用例的类中,我们引入一个实例对象,将每个执行用例类所产生的属性赋值给实例属性,这样每个用例类的实例属性都是不一样的。配置文件属性共享,用例属性不共享(类属性与实例属性)

配置文件conf.py部分配置示例:

#=============================================================服务器配置相关======================================================================================

REPORT_HTTP_URL = 'http:/*******'
# BITBUCKET ENVIRONMENT VARIABLE
BB_PROJECT_NAME=os.environ.get('TRIGGER_PROJECT_NAME') if os.environ.get('TRIGGER_PROJECT_NAME') else os.environ.get('BITBUCKET_REPO_SLUG')
BB_BUILD_NUMBER=os.environ.get('BITBUCKET_BUILD_NUMBER')
BB_TRIGGER_BUILD_NUMBER=os.environ.get('TRIGGER_BUILD_NAME')
BB_BRANCH=os.environ.get('TRIGGER_BRANCH_NAME') if os.environ.get('TRIGGER_BRANCH_NAME') else os.environ.get('BITBUCKET_BRANCH')
ENVIRONMENT=os.environ.get('TRIGGER_ENVIRONMENT') if os.environ.get('TRIGGER_ENVIRONMENT') else os.environ.get('ENVIRONMENT') 

#==============================================================SFTP上传测试报告连接信息=============================================================================
# SFTP
SFTP_HOST=os.environ.get('SFTP_HOST')
SFTP_USER=os.environ.get('SFTP_USER')
SFTP_PWD=os.environ.get('SFTP_PWD')

#==============================================================Teams通知频道========================================================================================
# MSTEAMS WEBHOOK
MSTEAMS_WEBHOOK=os.environ.get('MSTEAMS_WEBHOOK')
#反射所有环境变量并赋值给对象的属性
class Environment(object):

    def __new__(cls) -> any:
        for item in dir(conf):
            if not item.startswith("__") and not item.endswith("__") and not type(item).__name__ == 'module':
                setattr(cls,item,getattr(conf,item))
        
        return super().__new__(cls)
        
SystemEnv=Environment()

定义一个类Environment,通过魔术方法__new__将配置conf.py中的所有配置设置为类属性。再将这个类实例化,每个执行用例的模块导入这个实例对象,即每个用例类都有一个初始化的实例对象(拥有配置文件中的所有配置信息)

  • 如果上一个如果上一个测试模块的数据不需要流向下一个测试模块,且不能影响下一个测试模块的运行,数据隔离,那么就导入实例对象,每一个测试模块(excle中的每一个表单)对应一个实例对象SystemEnv。from *** import SystemEnv;在赋值属性时,给实例对象赋值属性:setattr(SystemEnv,**,**)
  • 如果上一个测试模块的数据要流向下一个测试模块,那么就需要在这两个(多个)模块中导入Environment类,将两个(多个)单独的测试模块.py文件串联起来,数据共享。所有的这些模块公用一个Environment类。from *** import Environment;在赋值属性时,给类对象赋值属性:setattr(Environment,**,**)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值