使用openpyxl参数化测试数据 特殊数组和字典的提取和转换

@TOC

使用openpyxl参数化测试数据

def getdata(sheet,file):
    """
    获取xlsx路径
    : param sheet: 工作表名称
    : param file:  xlsx文件路径
    : return 返回title data
    """
   
    wb = load_workbook(file,data_only=True)
    sheet = wb[sheet]
    columnnamecell=sheet['1']
    columnname=[y.value for y in columnnamecell ]
    mappinglist=[]
    for rownum in range(2,sheet.max_row+1):
        mapping = {}
        n = ''
        for x in columnname:
            index_num = columnname.index(x)+1 #excel索引和数组索引差1
            a = sheet.cell(rownum,index_num).value
            if a is None:
                mapping[x]=sheet.cell(rownum,index_num,n).value
            else:
                if x == 'casename': #casename单独取出作为title调用
                    name = sheet.cell(rownum,index_num).value
                else:
                        mapping[x] = a  #剩余数据组成字典 通过key取值
        mappinglist.append((name,mapping)) 
    return mappinglist

二次修改 增加指定读取的行数

def getdata(sheet,file,start,end_date):
    """
    获取xlsx路径
    : param sheet: 工作表名称
    : param file:  xlsx文件路径
    : param start: 开始读取的行数
    : param end_date: 结束读取的行数
    """
   
    wb = load_workbook(file,data_only=True)
    sheet = wb[sheet]
    columnnamecell=sheet[start]
    columnname=[y.value for y in columnnamecell ]
    mappinglist=[]
    for rownum in range(start+1,end_date+1):
        mapping = {}
        n = ''
        for x in columnname:
            index_num = columnname.index(x)+1 #excel索引和数组索引差1
            a = sheet.cell(rownum,index_num).value
            if a is None:
                mapping[x]=sheet.cell(rownum,index_num,n).value
            else:
                if x == 'casename':
                    name = sheet.cell(rownum,index_num).value
                else:
                        mapping[x] = a
        mappinglist.append((name,mapping))
    return mappinglist

如果有数组,字典等格式 先转成str 再使用eval()去掉双引号

print(type(eval(str(data))))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值