【测试数据比对】Python脚本进行数据比对

让自己写的脚本辅助测试,不是为了高大上,只是为了提高测试效率和测试质量

背景:

  • 日常测试经常要比对数据
  • 数据的来源可能是oracle,系统导出的Excel数据,产品提供的数据,自造的业务数据,等,
  • 总结记录测试过程

需求分析

  • 针对实际业务需求,数据比对的结果是要验证什么内容,达到什么目的
  • 数据比对一致应该怎么输出
  • 数据比对不一致应该如何,不一致的数据的进一步验证

用例设计及数据准备

无论数据来源是如何,建议将数据二次转换为Excel表中

  • 将数据比对的数据,转为Excel,设置为表1和表2
  • 将表1与表2数据进行比对,比对后将不一致的数据导出
  • 对不一致的数据进行二次验证,是否存在因字段,数值格式(比如金额中1和1.0 可能比对结果为不一致)
  • 对不一致数据是否合理,实际测试中,可能会有更加复杂的数据给到测试,如果与开发产品评估,不一致的数据为合理,即通过(曾遇到有些功能验证较为困难,开发只能提供了一份其他系统的总的数据,只能将数据分成几部分验证)
  • 这里有一点要注意,表1和表2数据可能字段很多,且不一样,建议根据实际要求筛选字段数据比对,将表1和表2的列字段清洗为一致,才有比对的价值

用Python脚本实现

如果用对比工具的话,只能做个别少量数据,比如50个数据左右,因为当数据较大时,相对不一致的情况也就越多,不适合用手动的方式

脚本设计方案

  • 封装Excel获取数据的方法
  • 导入表1数据
  • 导入表2数据
  • 遍历表1数据与表2比对,取出不一致的数据,写入txt表(或Excel中)
  • 遍历表2数据与表1比对,取出不一致的数据,写入txt表(或Excel中)

例表1

ID姓名支付金额日期支付方式
01张三1022-2-2现金
02张无忌12.922-2-2WeChat
03150.022-2-2pos
例表2
ID姓名支付金额日期支付方式
01翠花33.022-2-2WeChat
02张无忌0.022-2-2WeChat
03张无忌12.922-2-2WeChat

来补一下我不成熟的代码,如果有更优秀的比对代码,欢迎交流

封装Excel获取数据的方法,将数据以元祖或list 返回

# 定义一个获取excel文件的函数/方法,传入【文件名称】和【excel中的表名】
def getexceldata_cuihuan(filename,sheetname):
    exceldir = f'{"../excel文件路径/"}{filename}'
    excelbook = xlrd.open_workbook(exceldir,formatting_info=True)
    # 获取单元表
    worksheet = excelbook.sheet_by_name(sheetname)
    sheetrownum = worksheet.nrows
    execldatalsit =[]
    # 获取总行数
    #获取行数据
    for i in range(1, sheetrownum):  # 遍历行数为i
        # 获取列。这里自己定义需要获取的列名。这个列一般都是需要进行比对的列
        str1 = worksheet.cell(i, 0).value
        str2 = worksheet.cell(i, 1).value
        str3 = worksheet.cell(i, 2).value
        # 将金额转为float(如果比对的内容涉及金额,需要将金额转为浮点数,否则可能会导致比对失败)
        # str3 = float(worksheet.cell(i, 2).value)              
        execldatalsit.append((str1, str2, str3))  # 以列表的形式存储列数据
    return execldatalsit

if __name__ == '__main__':
    t = getexceldata_cuihuan('excel文件.xls', '导出表')
    for one in t:
        print(one)

导入表1数据

导入表2数据

先新建一个txt来准备用做最后的结果的写入

for循环遍历表1 ,将表1的每一行数据取出与表2比对

遍历结束后,将结果写到txt文件中

可将不一致的数据中,将数据,或者唯一键ID,将id生成到新的list中,后续可以用于新的脚本,用于核对这部分不一致的数据

for循环遍历表2,将表2中的每一行数据取出与表1比对

遍历结束后,将结果写到txt文件中

`

  • 0
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值