python中的类
类
基本定义
"""
定义类
规范: 类名一般首字母大写,多个英文单词,每个英文单词首字母大写
"""
class TestCase:
pass
类变量
class TestCase:
# 定义类变量
testtitle = ""
teststep = []
# 定义方法
def add_test_step(self,step):
# 访问类变量
TestCase.teststep.append(step)
# 实例化类
t1 = TestCase()
print(t1.testtitle) # 访问实例变量
print(t1.teststep)
# 访问方法
t1.add_test_step("打开浏览器")
print(t1.teststep)
使用类变量定义数据的时候会有一些问题
使用类变量定义数据的时候会有一些问题
class TestCase:
# 定义类变量
testtitle = ""
teststep = []
# 定义方法
def add_test_step(self,step):
# 访问类变量
TestCase.teststep.append(step)
def remove_test_step(self,index):
TestCase.teststep.pop(index)
# 实例化类
t1 = TestCase() #创建测试用例
t1.testtitle = "用户注册"
t1.add_test_step("打开浏览器")
t1.add_test_step("输入url")
t2 = TestCase()
t2.testtitle = "用户登录"
t2.add_test_step("到达登录页面")
t2.add_test_step("输入数据")
print(t1.testtitle,t1.teststep)
print(t2.testtitle,t2.teststep)
用户注册 ['打开浏览器', '输入url', '到达登录页面', '输入数据'] 用户登录 ['打开浏览器', '输入url', '到达登录页面', '输入数据']
所有的teststep 值都一样。注:使用类变量定义的时候会有一些问题,定义的类变量,所有实例化的对象都共享这个类变量,所以添加了构造器来解决这种问题
构造器
构造器:为每个实例化对象创建单独的变量。实例化一个类后,分配一块空间,如下图中t1,t2互不影响,原来的定义的类变量,类变量会共享,现在引入构造器这种方法,将一般变量都会放到init函数中,Self相当于实例对象本身,在类中无论构造器,还是方法中,都要用self,Init是一个类的构造器,还是特殊方法,可以加参数,也可以不加

注:每实例化一个对象,就在内存分配一块空间,拷贝类的属性和方法
class TestCase:
# 类的构造器 特殊方法
def __init__(self):
self.title_name="" # 实例变量
self.test_steps = []
def add_test_step(self,step):
self.test_steps.append(step)
# 实例化类
t1 = TestCase()
t1.title_name = "用户注册"
t1.add_test_step("打开浏览器")
t1.add_test_step("到达首页")
t2 = TestCase()
t2.title_name = "用户登录"
t2.add_test_step("打开注册页面")
t2.add_test_step("输入注册数据")
print(t1.title_name,t1.test_steps)
print(t2.title_name,t2.test_steps)
注:以上是不传参数的构造器,在构造器中为每个实例化对象创建单独的 变量。每个实例化对象单独维护自己的变量。
所以上述代码执行结果为
用户注册 ['打开浏览器', '到达首页'] 用户登录 ['打开注册页面', '输入注册数据']
如果想再加一个变量,例如:等级level,则需要在init函数中添加一个变量,另外对于每个实例化对象,需要添加一行代码
class TestCase:
# 类的构造器 特殊方法
def __init__(self):
self.title_name="" # 实例变量
self.test_steps = []
self.level='' #添加的代码
def add_test_step(self,step):
self.test_steps.append(step)
# 实例化类
t1 = TestCase()
t1.title_name = "用户注册"
t1.level='高' #添加的代码
t1.add_test_step("打开浏览器")
t1.add_test_step("到达首页")
t2 = TestCase()
t2.title_name = "用户登录"
t2.level='中' #添加的代码
t2.add_test_step("打开注册页面")
t2.add_test_step("输入注册数据")
print(t1.title_name,t1.test_steps,t1.level) #修改的代码
print(t2.title_name,t2.test_steps,t2.level) #修改的代码
如果再需要加几个变量,就会更加麻烦,在init函数中,定义时可以传入参数,这样可以简化代码,更加方便
class TestCase:
# 类的构造器 特殊方法 __init__ 定义的参数在实例化的时候 必须传入对应的参数 (类似于函数)
def __init__(self,name,level):
self.title_name=name # 实例变量 测试用例标题
self.test_level = level # 用例优先级
self.test_steps = [] # 测试步骤
def add_test_step(self,step):
self.test_steps.append(step)
def save_to_file(self,filename):
"""
将用例名字,用例优先级,用例的操作步骤,保存到 指定的文件中
:param filename: 保存的文件路径
:return:
"""
# 实例化类
t1 = TestCase(name="用户注册",level="高")
t1.add_test_step("打开浏览器")
t1.add_test_step("到达首页")
t2 = TestCase("用户登录","高")
t2.add_test_step("打开注册页面")
t2.add_test_step("输入注册数据")
print(t1.title_name,t1.test_steps)
print(t2.title_name,t2.test_steps)

class TestCase:
# 类的构造器 特殊方法 __init__ 定义的参数在实例化的时候 必须传入对应的参数 (类似于函数)
def __init__(self,name,level):
self.title_name=name # 实例变量 测试用例标题
self.test_level = level # 用例优先级
self.test_steps = [] # 测试步骤
def add_test_step(self,step):
self.test_steps.append(step)
def save_to_file(self,filename):
"""
将用例名字,用例优先级,用例的操作步骤,保存到 指定的文件中
:param filename: 保存的文件路径
:return:
"""
with open(filename,mode='w',encoding='utf8') as f:
f.write(self.title_name+'\n')
f.write(self.test_level+'\n')
for step in self.test_steps:
f.write(step+'\n')
# 实例化类
t1 = TestCase(name="用户注册",level="高")
t1.add_test_step("打开浏览器")
t1.add_test_step("到达首页")
# 保存到文件中
t1.save_to_file('./t1.txt')
t2 = TestCase("用户登录","高")
t2.add_test_step("打开注册页面")
t2.add_test_step("输入注册数据")
t2.save_to_file('./t2.txt')

浙公网安备 33010602011771号