python UI自動化測試


為了減小維護成本:

  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 import os
 2 
 3 class YamlReader(object):
 4     def __init__(self,yaml):
 5         #有yaml文件就返回文件,沒有就報異常
 6         if os.path.exists(yaml):
 7             self.yaml = yaml
 8         else:        
 9             raise FileNotFoundError("yaml文件不存在!")
10         self._data = None
11     
12     @property            #這里需要了解yaml返回的內容格式等信息
13     def data(self):        #調用yaml文件中的內容data
14         if not self._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 import os
 2 import xlrd
 3 
 4 class ExcelReader(object):
 5     #title_line =True 判斷是否有標題,為True時有標題
 6     def __init__(self,excel,sheet=0,title_line=True):
 7         if os.path.exists(excel):
 8             self.excel = excel
 9         else:
10             raise FileNotFoundError("Excel文件不存在!")
11             
12         self.sheet = sheet
13         self.title_line = title_line
14         self._data = list()
15     
16     @property
17     def data(self):
18         if not self.data:
19             workbook = open_workbook(self.excel)
20             #獲取sheet
21             if type(self.sheet) not in [int,str]:
22                 raise SheetTypeError('Please pass in <type int> or <type str> 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 in range(0,sheet.nrows):
34                     self._data.append(sheet.row_values(col))
35             return self._data

未完待續。。。。。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM