利用利用xlrd读取excel文件
在做自动化测试的时候,采用了将测试数据用例保存在excel表格中,然后从excel表格中读取数据。所以就有必要将excel数据转换为dict
例如:
需要将下图excel中数据
转换为:
{'姓名': 'A37', '密码': 'Q123', '业务类型': '传统直销业务', '车主电话': '166666666', '车辆性质': '家庭自用汽车', '车牌颜色': '蓝'}{'姓名': 'A38', '密码': 'Q123', '业务类型': '传统直销业务', '车主电话': '166666666', '车辆性质': '非营业机关、事业团体客车', '车牌颜色': '绿'}{'姓名': 'A39', '密码': 'Q123', '业务类型': '个人代理业务', '车主电话': '166666666', '车辆性质': '非营业货车', '车牌颜色': '蓝'}
就是前面的索引固定为表里面黄色部分,然后每一行为一个dict,这样只需要设计测试用例就行了,不管测试用例是增加还是减少,只需要在表格里面按照这个格式填写,不需要修改代码就能做到做到测试用例的增删改查,及其方便。
实现代码:
# coding=utf-8import xlrddef get_data(dir_case, sheetnum):#如果路径下xlsx文件很多,可以把文件名做一个拼接传入文件名这个参数# dir_case = 'F:\\code\\csdn\\cese_excel\\' + filename + '.xlsx''''获取其中一张sheettable = data.sheet_by_name(data.sheet_names()[0])sheet的行数与列数table.nrows, table.ncols'''data = xlrd.open_workbook(dir_case)table = data.sheets()[sheetnum]nor = table.nrowsnol = table.ncolsdict = {}for i in range(1, nor):for j in range(nol):title = table.cell_value(0, j)value = table.cell_value(i, j)# print valuedict[title] = valueyield dict''' • yield 是一个类似 return 的关键字,只是这个函数返回的是个生成器• 当你调用这个函数的时候,函数内部的代码并不立马执行 ,这个函数只是返回一个生成器对象• 当你使用for进行迭代的时候,函数中的代码才会执行'''if __name__ == '__main__':for i in get_data(r'D:\test_data.xlsx',0):print (i)
代码效果: