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代码如下:
# coding-utf-8
import xlrd
from readConfig import Signup_data,Login_data def SignUp():
filepath = Signup_data
file = xlrd.open_workbook(filepath)
table = file.sheets()[0]
nrows = table.nrows
Susername = []
Smobile = []
Stxtcode = []
Smobilecode = []
Spassword = []
# 定义对应的用例条件list
for i in range(1,nrows):
# 循环行列表数据
Susername.append(table.cell(i,0).value)
Smobile.append(table.cell(i,1).value)
Stxtcode.append(table.cell(i,2).value)
Smobilecode.append(table.cell(i,3).value)
Spassword.append(table.cell(i,4).value)
# 返回list结果
return Susername,Smobile,Stxtcode,Sobilecode,Spassword def Login():
filepath = Login_data
file = xlrd.open_workbook(filepath)
table = file.sheet()[0]
nrows = table.nrows
Lusername = []
Lpassword = [] for i in range(1,nrows):
Lusername.append(table.cell(i,0).value)
Lpassword.append(table.cell(i,1).value)
# 返回list结果
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数据的简单使用方法以及测试用例数据管理相关的一些思路,仅供参考,具体做法和优化请自行实践。。。
python:利用xlrd模块操作excel的更多相关文章
- python使用xlrd模块读写Excel文件的方法
本文实例讲述了python使用xlrd模块读写Excel文件的方法.分享给大家供大家参考.具体如下: 一.安装xlrd模块 到python官网下载http://pypi.python.org/pypi ...
- Python-利用xlrd模块操作excel
在工作中,无论是数据分析,还是批量导入数据,都会去操作excel,当然,数据分析有数据分析的方法,而我在开发中涉及到的是批量导入excel中的数据, 接下来介绍下如何利用python的xlrd模块来读 ...
- 使用xlsxwriter模块和xlrd模块操作Excel表格
1.xlsxwriter模块介绍:主要用来生成excel表格,插入数据.插入图标等表格操作 如下代码:目的是往demo01.xlsx插入数据和图片 # 导入xlsxwriter模块:主要用来修改表格的 ...
- python使用xlrd模块读写excel
1.行列索引均从0开始2.int数据被读成float数据,解决办法,if type(value) == float and value%1 == 0,value= int(value)模块读 #!/u ...
- 利用xlrd模块读取excel利用json模块生成相应的json文件的脚本
excel的格式如下 python代码如下,这里最难的就是合并单元格的处理 import xlrd import json excel_obj = xlrd.open_workbook("t ...
- Python使用xlwt模块 操作Excel文件
导出Excel文件 1. 使用xlwt模块 import xlwt import xlwt # 导入xlwt # 新建一个excel文件 file = xlwt.Workbook() # ...
- Python使用openpyxl模块操作Excel表格
''' Excel文件三个对象 workbook: 工作簿,一个excel文件包含多个sheet. sheet:工作表,一个workbook有多个,表名识别,如"sheet1",& ...
- 使用xlrd模块操作Excel
table = data.sheets()[] table = data.sheet_by_index() print(table) #获取正行或是整列的值 con = table.row_value ...
- Python xlrd模块读取Excel表中的数据
1.xlrd库的安装 直接使用pip工具进行安装(当然也可以使用pycharmIDE进行安装,这里就不详述了) pip install xlrd 2.xlrd模块的一些常用命令 ①打开excel文件并 ...
随机推荐
- AIOps 平台的误解,挑战及建议(下)— AIOps 挑战及建议
本文篇幅较长,分为上,中,下,三个部分进行连载.内容分别为:AIOps 背景/所应具备技术能力分析(上),AIOps 常见的误解(中),挑战及建议(下). 前言 我大概是 5,6 年前开始接触 ITO ...
- ERROR 1050 (42S01): Table xxx already exists
今天遇到一个关于MySQL求助的问题,修改表结构时遇到"ERROR 1050 (42S01): table xxx already exits" mysql> ALTER ...
- Spring(mvc)思维导图
spring mvc简介与运行原理 Spring的模型-视图-控制器(MVC)框架是围绕一个DispatcherServlet来设计的,这个Servlet会把请求分发给各个处理器,并支持可配置的处理器 ...
- [20190306]共享服务模式与SDU.txt
[20190306]共享服务模式与SDU.txt --//一些文档提到共享服务模式,服务端SDU=65535,测试验证看看.--//链接:https://blogs.sap.com/2013/02/0 ...
- Linux系统网络文件配置
/etc 一.修改配置文档(需要重启网络配置,永远生效) 1.修改IP地址[MariaDB@db1]$ vi /etc/sysconfig/network-scripts/ifcfg-eth0DEV ...
- Redis高可用 Sentinel
官网: https://redis.io/topics/sentinel Redis的主从只能实现数据热备份的功能,主宕机后从无法自动接管服务,因此Redis推出了Sentinel的主从监控模式. S ...
- Linux用户抢占和内核抢占详解(概念, 实现和触发时机)--Linux进程的管理与调度(二十)
1 非抢占式和可抢占式内核 为了简化问题,我使用嵌入式实时系统uC/OS作为例子 首先要指出的是,uC/OS只有内核态,没有用户态,这和Linux不一样 多任务系统中, 内核负责管理各个任务, 或者说 ...
- [Hive_6] Hive 的内置函数应用
0. 说明 Hive 的内置函数的基本操作 | 时间函数 | String 函数 | 条件语句 | explode | split | substring 1. 基本操作 查看函数 show func ...
- Kali 2.0 Web后门工具----WebaCoo、weevely、PHP Meterpreter
注:以下内容仅供学习使用,其他行为均与作者无关!转载请注明出处,谢谢! 本文将介绍 Kali 2.0 版本下的三款Web后门工具:WebaCoo.weevely.PHP Meterpreter,这类工 ...
- vCenter server 的部署和实施
上一次我们讲解了vclient 5.5 的安装以及连接ESXI5.5,但vclient只能管理一台ESXI,管理多台还需要切换登陆,非常麻烦.所以这次我们就来讲解一下vcenter server的相关 ...