python:利用xlrd模塊操作excel


在自動化測試過程中,對測試數據的管理和維護是一個不可忽視的點。一般來說,如果測試用例數據不是太多的話,使用excel管理測試數據是個相對來說不錯的選擇。

這篇博客,介紹下如何利用python的xlrd模塊來讀取excel的數據。。。

 

一、下載安裝

直接cmd進入命令行,然后輸入 pip install xlrd 命令進行安裝;或者輸入 pip show xlrd 命令來查看是否安裝有xlrd。

安裝方法不重要,通過安裝包安裝也可以,只要達到目的即可。

 

二、用法介紹

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  #單元格的值'

 

三、示例Demo

簡單的讀取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中)或者測試點比較多,這樣就比較臃腫了,可以繼續對其進行優化,比如寫一個類,

初始化一些共用的信息,每個功能點對應的不同方法只需要幾行代碼就搞定,還可以從業務角度進行拆分等(后續會不斷更新優化后的內容)。。。

 

四、測試數據管理

1、使用excel管理測試數據的局限性

博客開頭就提到了,excel只適用於測試用例數據不太多的情況,如果測試數據較多,那么excel的瓶頸也很明顯,原因如下:

①、excel單表只能支持65535行,如果測試用例有很多,那么excel就是制約測試用例和測試數據管理的最大問題;

②、數據量大,excel的增刪改查不好做,不能做成服務,因為有IO鎖,不支持事務,無法多人共用,對后續的自動化集成平台開發帶來影響;

2、優化方案

①、測試數據存儲在專門的測試DB,封裝讀寫數據的方法;

②、多人共用的問題,可以用docker部署高可用的測試環境,每個人都擁有獨立的測試環境,做好版本管理;

 

如上所示,就是xlrd讀取excel數據的簡單使用方法以及測試用例數據管理相關的一些思路,僅供參考,具體做法和優化請自行實踐。。。

 


免責聲明!

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



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