在自動化測試過程當中,對測試數據的管理和維護是一個不可忽視的點。通常來講,若是測試用例數據不是太多的話,使用excel管理測試數據是個相對來講不錯的選擇。html
這篇博客,介紹下如何利用python的xlrd模塊來讀取excel的數據。。。python
1、下載安裝docker
直接cmd進入命令行,而後輸入 pip install xlrd 命令進行安裝;或者輸入 pip show xlrd 命令來查看是否安裝有xlrd。數據庫
安裝方法不重要,經過安裝包安裝也能夠,只要達到目的便可。數組
2、用法介紹app
xlrd是python語言中讀取excel的擴展工具包,能夠實現指定表單、指定單元格的讀取(若是要寫入數據,須要使用另外一個擴展庫:xlwt)。工具
官方文檔:http://xlrd.readthedocs.io/en/latest/index.html測試
基本用法介紹以下(來自百度百科):優化
# 示例: # 導入擴展包
import xlrd # 打開Excel文件讀取數據
data = xlrd.open_workbook('excelFile.xls') [1] # 獲取一個工做表
table = data.sheets()[0] #經過索引順序獲取
table = data.sheet_by_index(0) #經過索引順序獲取
table = data.sheet_by_name(u'Sheet1') #經過名稱獲取 # 獲取整行和整列的值(數組)
table.row_values(i) table.col_values(i) # 獲取行數和列數
nrows = table.nrows ncols = table.ncols # 循環行列表數據
for i in range(nrows ): print table.row_values(i) # 單元格
table.cell(rowx,colx) cell_A1 = table.cell(0,0).value cell_C4 = table.cell(3,2).value # 使用行列索引
cell_A1 = table.row(0)[0].value cell_A2 = table.col(1)[0].value # 簡單的寫入
row = 0 col = 0 # 經常使用單元格中的類型
0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error, 6 blank ctype = 1 value = '單元格的值'
# 擴展的格式化
xf = 0 table.put_cell(row, col, ctype, value, xf) table.cell(0,0) #單元格的值'
table.cell(0,0).value #單元格的值'
3、示例Demospa
簡單的讀取excel文件的demo代碼以下:
1 # coding-utf-8
2 import xlrd 3 from readConfig import Signup_data,Login_data 4
5 def SignUp(): 6 filepath = Signup_data 7 file = xlrd.open_workbook(filepath) 8 table = file.sheets()[0] 9 nrows = table.nrows 10 Susername = [] 11 Smobile = [] 12 Stxtcode = [] 13 Smobilecode = [] 14 Spassword = [] 15 # 定義對應的用例條件list
16 for i in range(1,nrows): 17 # 循環行列表數據
18 Susername.append(table.cell(i,0).value) 19 Smobile.append(table.cell(i,1).value) 20 Stxtcode.append(table.cell(i,2).value) 21 Smobilecode.append(table.cell(i,3).value) 22 Spassword.append(table.cell(i,4).value) 23 # 返回list結果
24 return Susername,Smobile,Stxtcode,Sobilecode,Spassword 25
26 def Login(): 27 filepath = Login_data 28 file = xlrd.open_workbook(filepath) 29 table = file.sheet()[0] 30 nrows = table.nrows 31 Lusername = [] 32 Lpassword = [] 33
34 for i in range(1,nrows): 35 Lusername.append(table.cell(i,0).value) 36 Lpassword.append(table.cell(i,1).value) 37 # 返回list結果
38 return Lusername,Lpassword
腳本解析:
①、剛開始導入的自定義模塊 from readConfig import Signup_data,Login_data ,這裏我將測試數據的文件路徑放在了配置文件裏,而後簡單封裝了讀取配置文件的一個readConfig方法,
這樣作的好處是下降了維護成本(即便後期相對的有變更,只須要改變配置文件和這個封裝的方法,而不用去修改測試腳本),提升了腳本可維護性,重用性和服務遷移的成本。
讀取配置文件連接:python:利用configparser模塊讀取配置文件
可放入配置文件的信息這裏舉一些例子:數據庫鏈接信息、文件路徑、用戶名、密碼、後臺接口等。。。
PS:若是使用GIT作版本控制,文件上傳遠程倉庫後,敏感信息不作管理,這樣風險比較大(如何下降這種風險,後續的博客會介紹)。。。
②、如上面的代碼所示,我只是簡單的寫了註冊和登陸的2個方法,但若是測試數據比較多(存在不少不一樣excel中)或者測試點比較多,這樣就比較臃腫了,能夠繼續對其進行優化,好比寫一個類,
初始化一些共用的信息,每一個功能點對應的不一樣方法只須要幾行代碼就搞定,還能夠從業務角度進行拆分等(後續會不斷更新優化後的內容)。。。
4、測試數據管理
一、使用excel管理測試數據的侷限性
博客開頭就提到了,excel只適用於測試用例數據不太多的狀況,若是測試數據較多,那麼excel的瓶頸也很明顯,緣由以下:
①、excel單表只能支持65535行,若是測試用例有不少,那麼excel就是制約測試用例和測試數據管理的最大問題;
②、數據量大,excel的增刪改查很差作,不能作成服務,由於有IO鎖,不支持事務,沒法多人共用,對後續的自動化集成平臺開發帶來影響;
二、優化方案
①、測試數據存儲在專門的測試DB,封裝讀寫數據的方法;
②、多人共用的問題,能夠用docker部署高可用的測試環境,每一個人都擁有獨立的測試環境,作好版本管理;
如上所示,就是xlrd讀取excel數據的簡單使用方法以及測試用例數據管理相關的一些思路,僅供參考,具體作法和優化請自行實踐。。。