模块中的多个类之间经常要共享某一变量,比如生成BVT报告的JUnit适配器类实例需要根据Cobertura适配器类实例的计算出来的有效行数计算千行代码测试用例数,又比如适配器类在备份BVT报告时需要知道报告备份的地址,而这个地址是保存在BVT类中的。
以上场景都需要解决变量在类实例间的传递问题,办法有4个:使用模块级的全局变量、使用类的静态成员变量、使用环境变量、定义为global。
模块级全局变量适用于此变量在模块内共享的情况,优点是简单易懂,在模块开始部分定义一个空字典,条目的key是该条目的功能说明;
类静态成员适用于该变量是类的普遍特性的情况,用 self.class.var_name 的方法定义,用 ClassName.var_name 的方法获取。
环境变量和global变量适用于在模块间共享变量的情况,但对数据的封装性比较差,尽量不要使用。