python常用UI自动化设计模式总结
众所周知,UI自动化是出了名的不稳定。由于测试代码能力弱的缘故,往往是开发改一行代码,测试改一千行代码,疲于奔命。因此遵循一些常用设计模式就很有必要。这里梳理总结一些UI测试常用设计模式,力求简单易懂,以及设计模式里对测试最有用的。以备查阅。这里参照社区大佬的两篇帖子学习总结,可以对照着看看
page object设计模式
所有模块设计均遵循page object结构
- 用例层:测试人员编写测试用例代码的地方,可以调用page层和封装层。
- page层:一个页面一个类,包含该页面的业务逻辑封装以及部分控件定义。
- 封装层:根据业务需要,封装常用的业务逻辑(相比于page层的业务逻辑封装,它的范围更广,有些时候是跨页面的业务逻辑。 属于模块级的业务封装)
工厂模式
1.简单工厂模式
#encoding=utf-8
__author__ = 'kevinlu1010@qq.com'
class LeiFeng():
def buy_rice(self):
pass
def sweep(self):
pass
class Student(LeiFeng):
def buy_rice(self):
print '大学生帮你买米'
def sweep(self):
print '大学生帮你扫地'
class Volunteer(LeiFeng):
def buy_rice(self):
print '社区志愿者帮你买米'
def sweep(self):
print '社区志愿者帮你扫地'
class LeiFengFactory():
def create_lei_feng(self, type):
map_ = {
'大学生': Student(),
'社区志愿者': Volunteer()
}
return map_[type]
if __name__ == '__main__':
leifeng1 = LeiFengFactory().create_lei_feng('大学生')
leifeng2 = LeiFengFactory().create_lei_feng('大学生')
leifeng3 = LeiFengFactory().create_lei_feng('大学生')
leifeng1.buy_rice()
leifeng1.sweep()
写一个雷锋类,定义买米和扫地两个方法,写一个学生类和社区志愿者类,继承雷锋类,写一个工厂类,根据输入的类型返回学生类或志愿者类。
2.工厂模式
#encoding=utf-8
__author__ = 'kevinlu1010@qq.com'
class LeiFeng():
def buy_rice(self):
pass
def sweep(self):
pass
class Student(LeiFeng):
def buy_rice(self):
print '大学生帮你买米'
def sweep(self):
print '大学生帮你扫地'
class Volunteer(LeiFeng):
def buy_rice(self):
print '社区志愿者帮你买米'
def sweep(self):
print '社区志愿者帮你扫地'
class LeiFengFactory():
def create_lei_feng(self):
pass
class StudentFactory(LeiFengFactory):
def create_lei_feng(self):
return Student()
class VolunteerFactory(LeiFengFactory):
def create_lei_feng(self):
return Volunteer()
if __name__ == '__main__':
myFactory = StudentFactory()
leifeng1 = myFactory.create_lei_feng()
leifeng2 = myFactory.create_lei_feng()
leifeng3 = myFactory.create_lei_feng()
leifeng1.buy_rice()
leifeng1.sweep()
雷锋类,大学生类,志愿者类和简单工厂一样,新写一个工厂方法基类,定义一个工厂方法接口(工厂方法模式的工厂方法应该就是指这个方法),然后写一个学生工厂类,志愿者工厂类,重新工厂方法,返回各自的类。
工厂方法相对于简单工厂