你在学习python自动化测试吗?听过requests库吗?
tablib是requests库常年维护的一个可以操作Excel等多种文件格式,将他们变成一种通用数据集的第三方库。
tablib支持的主要数据格式有:
◆ xls, 老版 office 的 excel 文件格式;
◆ xlsx系列,新版 office 文件格式;
◆ json
◆ yaml
◆ html
◆ csv
◆df,pandas 的 DataFrame, 需要安装 pandas
也就是说,tablib 能把不同格式的数据转化成一种通用的关系型数据格式,然后再各个格式之间无缝切换。
什么叫关系型数据格式呢?
比如:
◆ MySQL数据,每行数据对应着一个字段名。你可以通过这个库将数据库查询到的数据轻松存入Excel。
◆ Excel数据,每行数据都有一个header。
◆ json, 数据分为key和value
◆ 上面提到的都类似。
tablib这种通用数据格式的特性解决了以前一些Excel操作库的一些问题。
操作Excel的几个常用库:
◆ xlrd
◆ openpyxl
这些库都是非常优秀的库,限制性也有:
1、xlrd 的问题。他只能读,不能写。要写还得另外装库。
2、openpyxl的问题。只支持xlsx系列的读写。因为现在大多使用这种Excel格式,所以这个问题其实可以忽略,但如果你的office软件比较老,只能用xls格式,这个库就用不了了。
tablib的安装:
1、安装pip install tablib
2、导入import tablib
核心概念
Dataset快速入门
先看一个小例子:
◆ url
◆ method
◆expected
http://lemon.ke.qq.com
get
成功
http://lemonban.com
post
成功
url, method, expected 是一个表的表头 header,其实就是每一列的名字,在数据库里我们称为字段名。下面的行都是数据。
想要创建一个Excel非常的简单,只需要准备你需要的数据data, 表头header和表的名字 title:
打印的结果是这样的:
保存为excel
要保存为excel文档,只需要像操作普通的文件一样读写就可以了,写入data.xls 或者 data.xlsx 属性里面的数据:
注意:模式需要用二进制模式wb。
保存之后的结果是这样的:
Databook就是类似工作簿的概念,所以Databook需要的参数实际上就是上文中的 DataSet。
如果一个Excel里只有一个表,用DataSet就够了,如果有多个表:
表格导入:import_set
说完Excel的写操作, 接下来是读操作, 读取一个excel文件也是和普通文件读写类似,调用 import_set 方法:
获取数据进行自动化测试
用一个例子来实战,获取excel文件里的数据,执行自动化测试程序:
和DataSet的操作一样的:
这篇我们熟悉了tablib的核心概念:
◆ DataBook
◆ DataSet
◆ 读取, import_set, import_book
◆ 写入, write
作者:佚名