使用 tablib 来自动化管理测试用例,其他的工具都不用学了

你在学习 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

核心概念

tablib.Dataset()  # 相当于 Excel 中的 sheet
tablib.Databook()  # 相当于 Excel 中的 workbook 工作簿

Dataset 快速入门

先看一个小例子:

url method expected
lemon.ke.qq.com get 成功
lemonban.com post 成功

url, method, expected 是一个表的表头 header,其实就是每一列的名字,在数据库里我们称为字段名。下面的行都是数据。

想要创建一个 Excel 非常的简单,只需要准备你需要的数据 data, 表头 header 和 表的名字 title:

import tablib

# 表各列的标题 header
headers = [‘url‘, ‘method‘, ‘expected‘]

# 需要存到 excel 的数据
data_list = [
    [‘https://lemon.ke.qq.com‘, ‘get‘, ‘成功‘],
    [‘https://lemonban.com‘, ‘post‘, ‘成功‘]
]

# 生成数据
data = tablib.Dataset(*data_list, headers=headers,title=‘测试用例‘)
print(data)

打印的结果是这样的:

保存为 excel

要保存为 excel 文档,只需要像操作普通的文件一样读写就可以了,写入 data.xls 或者 data.xlsx 属性里面的数据:

with open(‘demo.xls‘, ‘wb‘) as f:
    f.write(a.xls)

with open(‘demo.xlsx‘, ‘wb‘) as f:
    f.write(a.xlsx)

注意:模式需要用二进制模式 wb

保存之后的结果是这样的:

Databook

Databook 就是类似工作簿的概念,所以 Databook 需要的参数实际上就是上文中的 DataSet。如果一个 Excel 里只有一个表,用 DataSet 就够了,如果有多个表:

book = tablib.Databook([data, data2])

with open(‘demo_book.xls‘, ‘wb‘) as f:
    f.write(book.xls)

表格导入:import_set

说完 Excel 的写操作, 接下来是读操作, 读取一个 excel 文件也是和普通文件读写类似,调用 import_set 方法:

with open(‘demo.xls‘, ‘rb‘) as f:
    # 接受 2 个参数,读出来的数据和读取的文件格式
    data = tablib.import_set(f.read(), ‘xls‘)
    print(data)

# 或者采用第二种方式
with open(‘demo.xls‘, ‘rb‘) as f:
    data = tablib.DataSet().load(f.read(), ‘xls‘)
    print(data)

获取数据进行自动化测试

用一个例子来实战,获取 excel 文件里的数据,执行自动化测试程序:

def api_tester(url, method, expected):
    print("正在测试{},请求方法{}, 预期结果{}".format(
            url, method, expected))

with open(‘demo.xls‘, ‘rb‘) as f:
    # 接受 2 个参数,读出来的数据和读取的文件格式
    data = tablib.import_set(f.read(), ‘xls‘)
    print(data)
    for i in data:
        api_tester(*i)

导入book

和 DataSet 的操作一样的:

with open(‘demo.xls‘, ‘rb‘) as f:
    # 接受 2 个参数,读出来的数据和读取的文件格式
    data = tablib.import_book(f.read(), ‘xls‘)
    print(data)

# 或者采用第二种方式
with open(‘demo.xls‘, ‘rb‘) as f:
    data = tablib.DataBook().load(f.read(), ‘xls‘)
    print(data)

总结

这篇我们熟悉了 tablib 的核心概念:

  • DataBook
  • DataSet
  • 读取, import_set, import_book
  • 写入, write

下篇我们将行列和数据操作,以及它的一些特性。

原文地址:https://www.cnblogs.com/wagyuze/p/11102382.html

时间: 2024-10-25 15:27:21

使用 tablib 来自动化管理测试用例,其他的工具都不用学了的相关文章

关于selenium自动化测试数据的管理---测试用例管理---jxl,POI

标 准 选择朋友是结交之前要办的第一件事.选择朋友的标准是什么?当然是与志向远大的人交友,与兴趣相投的人交友,与见识广博的人交友,与正直的人交友,与诚信的人交友.近朱者赤,近墨者黑.交上益友,一生幸福;交上损友,一生祸害. selenium 多数被应用于功能测试(冒烟测试).流程测试.回归测试,这里要说的就是在执行这些测试的时候,测试用例的管理问题. 常见的黑盒测试方法分为:边界值分析.等价类划分.因果图.错误推测...这里不都一一举例,作者有一篇文章里画了一张图,是专门详解常用的测试方法的.总

自动化测试之-测试用例设计方法总结

黑盒.白盒.接口测试一系列用例设计方法. 黑盒测试用例设计方法包括等价类划分法.边界值分析法.错误推测法.因果图法.判定表驱动法.正交试验设计法.功能图法.场景图法等. (一)等价类划分法 定义:等价类划分法是把所有可能输入的数据,即程序的输入域划分策划国内若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例.方法是一种重要的.常用的黑盒测试用例设计方法. 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表

python自动化管理mysql主从同步

mysql 多实例 1.my.cnf 通过定义mysqldconfig类   mysqld_vars = {}  从里面获得很多配置文件相关参数写入字典 mysql.py 2.init DB 初始化数据库 3.修改权限 4.rc脚本启动 5.check 检查一下配置文件,配置文件与mysql变量同步 6.值其实一样,不让显示 7.Popen 调用 mysql -e 命令 SQL IO Seconds_Behind_Master:0    看这个阀值.大于两秒 8.mysql主从 主配置文件: b

自动化管理工具puppet

Linux之puppet puppet简介 puppet是一套IT基础设施自动化管理工具,可以管理其整个生命周期,其官方网站:www.puppetlabs.org.其作者Luke Kanies成立了puppetLabs,于2005年发布0.2版本.puppet基于ruby语言研发,puppet有声明性.基于模型的配置语言,其也有自己的配置编程言. puppet的优势 基于master/agent的认证机制 不依赖于客户端系统的管理权限 可实现配置自动推送给客户端 puppet的版本 0.2 0.

第三十天-ssh key企业批量分发自动化管理案例

本文实现一个应用ssh key 批量分发案例 目录 一.ssh key 原理及案例原理简图 1.ssh key 简介 2.rsa和dsa区别 3.ssh-copy-id的特殊应用 4.ssh-copy-id的原理 5.案例简图 二.操作步骤 三.具体实现步骤 服务端A: 客户端B: 客户端C: 四.ssh 批量分发与管理方案小结 五.企业级生产场景批量管理,自动化管理方案 一.ssh key 原理及案例原理简图 1.ssh key 简介 特别提示:在整个方案实现中,公钥(public key)和

【DevOps】做个愉快的DevOps之XenServer自动化管理(1)

这里主要是用python来做为开发工具,当然,如果你喜欢,go.java.C都可以.语言只是一种工具,不必纠结那种,用得顺手,方便,而且适合团队作战的最好. 我选python,主要是python是高级语言,拥有大量的开源模板库,初期学习成本低,适合在团队内迅速推广.简单的说就是不用我一个人去搞,我闪了后,别人也能轻松接手维护. XenServer的开放接口工具叫Xapi,网站是   :  http://xapi-project.github.io/xen-api/   .当然,使用Xapi前,我

智能时代 企业自动化管理升级

新经济环境下,随着众多创业公司如雨后春笋般拔地而起,许多企业开始有了危机意识,纷纷拓展业务,引进更多企业资源,以便在竞争激烈的市场中站稳脚跟,赢得更广阔的发展空间.随着业务扩张和发展,企业对自动化管理的需求越来越大,比如客户关系管理.项目管理.采购管理.日常办公管理等等,如果能够通过信息化技术进行自动管理,不但减少人力资源支出,而且各项业务管理也更清晰有序,提高工作效率.通过企业自动化管理,企业在内部管理和外部业务拓展方面将得到更进一步的发展.对此,企业应用管理软件成了企业向自动化管理转型的利器

使用randoop自动化生成测试用例

使用randoop自动化生成测试用例 1. 综述 使用randoop自动化生成测试用例 2. 操作 下载randoop的jar包: 将jar包和所要测试的类(如Calculate.class)放在同一个文件夹: 在此文件夹打开命令行提示符,输入如下命令: java -ea -classpath .;randoop-2.1.4.jar;Calculate randoop.main.Main gentests --testclass=Calculate --timelimit=15 结果如下: 在那

自动化管理kvm

利用python自动化管理kvm虚拟机,实现虚拟机的生命周期管理 自动化管理kvm