为了减小维护成本:
1.UI自动化测试需要有较为稳定的环境
2.代码设计合理,那么我们就需要面向对象的设计一个框架,将重复的代码模块化
一、首先总结一下 UI自动化大概要哪些模块
1.config(配置文件):用来存放配置文件(YML,XML,HTML。。。)
2.data(数据文件):存放测试数据等
3.drivers(驱动):Chromedriver,IEdriver
4.log(日志文件):打印测试log
5.report(报告):生成HTML测试报告
6.test(测试用例):写TestCase调用其他模块中的方法
7.utils(公共方法):写调用config、data、log、report等其他模块的方法
8.后续可自己增加其他模块,比如针对某类型元素的获取,page中元素的定位等
二、结合起来运用
首先如果我们没有框架的话, 写一个testcase可以直接写到一个class中,甚至不用class,甚至连def都可以不用就实现了一个case;
但是,万一下次又用到了同样的功能,需要写同样的内容怎么办呢???甚至它和之前的case只有一点点不一样的话呢???我们需要不断的复制粘贴并且修改;
那么我们这里需要用到class来实现不同模块之间的调用
1、我们需要在utils方法中写入一些基本方法,实现对其他模块的调用
1)、file_reader.py(读取文件):我们上面描述的框架中包含了config中的YML文件(或者其他)、data中的Excel文件,
config---YML:
1 importos2
3 classYamlReader(object):4 def __init__(self,yaml):5 #有yaml文件就返回文件,没有就报异常
6 ifos.path.exists(yaml):7 self.yaml =yaml8 else:9 raise FileNotFoundError("yaml文件不存在!")10 self._data =None11
12 @property #这里需要了解yaml返回的内容格式等信息
13 def data(self): #调用yaml文件中的内容data
14 if notself._data:15 with open(self.yaml,'rb') as f:16 self._data =list(yaml.safe_load_all(f))17 return self._data
data--Excel:
1 importos2 importxlrd3
4 classExcelReader(object):5 #title_line =True 判断是否有标题,为True时有标题
6 def __init__(self,excel,sheet=0,title_line=True):7 ifos.path.exists(excel):8 self.excel =excel9 else:10 raise FileNotFoundError("Excel文件不存在!")11
12 self.sheet =sheet13 self.title_line =title_line14 self._data =list()15
16 @property17 defdata(self):18 if notself.data:19 workbook =open_workbook(self.excel)20 #获取sheet
21 if type(self.sheet) not in[int,str]:22 raise SheetTypeError('Please pass in or not {}'.format(type(self.sheet)))23 elif type(self.sheet)==int:24 sheet =workbook.sheet_by_index(self.sheet)25 elif type(self.sheet)==str:26 sheet =workbook.sheet_by_name(self.sheet)27
28 if self.title_line: #获取data值,有title为dict,没有title为list
29 title = sheet.row_value() #第一行定义为title
30 for col in range(1,sheet.nrows):31 self._data.append(dict(zip(title,sheet.row_values(col))))32 else:33 for col inrange(0,sheet.nrows):34 self._data.append(sheet.row_values(col))35 return self._data
未完待续。。。。。
如果觉得《python ui自动化测试仪器_python UI自动化测试》对你有帮助,请点赞、收藏,并留下你的观点哦!