让自己写的脚本辅助测试,不是为了高大上,只是为了提高测试效率和测试质量
背景:
- 日常测试经常要比对数据
- 数据的来源可能是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 | 张三 | 10 | 22-2-2 | 现金 |
02 | 张无忌 | 12.9 | 22-2-2 | |
03 | 乙 | 150.0 | 22-2-2 | pos |
例表2 | ||||
ID | 姓名 | 支付金额 | 日期 | 支付方式 |
– | – | – | – | – |
01 | 翠花 | 33.0 | 22-2-2 | |
02 | 张无忌 | 0.0 | 22-2-2 | |
03 | 张无忌 | 12.9 | 22-2-2 |
来补一下我不成熟的代码,如果有更优秀的比对代码,欢迎交流
封装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文件中
`