龙空技术网

想用 Excel 进行自动化冒烟测试?

阿木自动化软件测试 46

前言:

现在看官们对“python小乌龟画屋顶冒烟”都比较注重,兄弟们都需要学习一些“python小乌龟画屋顶冒烟”的相关内容。那么小编在网摘上搜集了一些有关“python小乌龟画屋顶冒烟””的相关内容,希望你们能喜欢,各位老铁们快快来了解一下吧!

tablib 是 requests 库作者常年维护的一个 python 第三方库,可以操作 Excel 等多种文件格式变成一种通用数据集。

tablib 支持的主要数据格式有:

xls, 老版 office 的 Excel 文件格式;xlsx 系列,新版 office 文件格式;JSONYAMLHTMLCSVdf,(pandas 的 DataFrame, 需要安装 pandas)

tablib 操作测试用例的基础使用非常简单,你只需要记住以下 2 点:

使用 import_set 导入 Excel 文件

  with open('demo.xls', 'rb') as f:    # 接受 2 个参数,读出来的数据和读取的文件格式    data = tablib.import_set(f.read(), 'xls')    print(data)复制代码
使用 DataSet 创建 Excel 表格
  data = tablib.Dataset(*data_list, headers=headers,title='测试用例')复制代码

现在来进行更精确的操作:

行列数据操作

先通过加载 Excel 文件获取到数据

  a = tablib.import_set(f.read(), 'xls')复制代码

a 得到的是一个列表,每个元素是每一行数据。

获取行

  # 获取第一行第一列print(a[0][0])# 获取第一行的 url 列print(a.dict[0]['url'])# 获取前 2 行print(a[:2])复制代码
获取列
  print(a['url'])复制代码
插入行
  with open('demo_book.xls', 'rb+') as f:    a = tablib.import_set(f.read(), 'xls')    print(a)    # 添加行    a.append(['zhiwang', 'put', '成功'])      # 在指定行插入    a.insert(2,['zhiwang', 'put', '成功'])with open('demo_book.xls', 'wb') as f:    f.write(a.xls)print(a)复制代码
插入列
  # 在最后添加a.append_col(['成功','失败', '失败'], header='actual_result')# 在指定位置添加列a.insert_col(3,['成功','失败', '失败'], header='actual_result')复制代码
修改
  # 修改某一行数据a[0] = ('baidu', 'put', 'shibai', 'shibai')# 修改某个具体的数据a._data[0][0] = 'wobuzhidao'复制代码

注意:不要在代码里直接操作 a._data, 可以封装成方法。

冒烟用例执行

在测试过程中,我们经常需要执行冒烟用例。或者给测试用例打标签,比如登录功能,成功用例,异常用例等等。tablib 通过 tags 关键字方便删选指定的测试用例来执行。

添加 tags

  # 添加标签a.append(['buzhi', 'put', 'c','c'], tags=['成功'])# 获取所有‘成功’的测试用例success = a.filter(tag='成功')复制代码
修改 tags
  # 将测试用例的标签修改成‘失败’a._data[0].tags = ['失败']# 获取所有‘失败’ 的测试用例failed = a.filter(tag='失败')print(failed)复制代码
去除重复元素
  a.remove_duplicates()复制代码
灵活的格式切换

测试数据最常用的功能是需要切换格式,比如把 Excel 格式的数据切换成 YAML , 这个在接口自动化测试框架 httprunner 中经常用到。还是用 a 来表示 DataSet 数据:

存储为 YAML 文件:

  with open('demo.yml', 'w', encoding='utf-8') as f:    f.write(a.yaml)复制代码
导入 YAML 文件:
  with open('demo.yml', 'r') as f:    a = tablib.Dataset().load(f.read(), format='yaml')    print(a.html)复制代码

效果:

651 x 193

导出为 HTML :

  with open('demo.html', 'w', encoding='utf-8') as f:    f.write(data.html)复制代码

效果:

728 x 188 879 x 227

导出为 json:

  with open('demo.json', 'w', encoding='utf-8') as f:    f.write(data.json)复制代码

效果:

  [    {        "url": "baidu",        "method": "get",        "expect": "failed"    },    {        "url": "lemon",        "method": "post",        "expect": "success"    }]复制代码
其他常用方法lpop(),lpush(row, tags=[]),lpush_col(col, header=None) 是对列的相关操作pop(),rpop(),rpush(row, tags=[]),rpush_col(col, header=None) 是对行的相关操作remove_duplicates() 去除重复的记录sort(col, reverse=False) 根据列进行排序subset(rows=None, cols=None) 返回子 Datasetwipe() 清空 Dataset,包括表头和内容总结

tablib 这个库非常灵活,用法非常好记,完全符合我们对 Excel 的理解。非常适用于 python 自动化测试的用例数据管理。只有一个缺点:中文资料太少。后面我会翻译一些优秀的英文文档,让更多人把这个优秀的库用起来。

最后:【可能给你带来帮助的教程】(私聊q1领取)

这一些资料,对做【软件测试】的朋友而言应该是较为完整了,这类学习资料也陪伴我走过了最艰难的路程,希望也可以帮助到你!万事要尽早,尤其是技术行业,一定要提升技术功底。

标签: #python小乌龟画屋顶冒烟