美文网首页
3种方法手把手教你从Excel读取数据(一)

3种方法手把手教你从Excel读取数据(一)

作者: sai德很黑 | 来源:发表于2020-08-29 15:58 被阅读0次

    在实现接口自动化测试过程中,经常要使用返回的数据来验证接口是否正常,而测试数据和代码一起存放是显然不适合的。作为测试人员第一反应就是Excel,那写到Excel中的数据怎么再读取出来呢?带着这个疑问我们接着往下看:

    这是我们存到Excel的数据:


    20200829151331.png

    解决方法:

    python第三方库 xlrd、openpyxl、pandas

    方法一:xlrd(只能读取,不能写入)

    注意:此方法是以list嵌套list,取值某个值用list里面索引

    代码附上

    
    import xlrd
    class ReadExcelOne:
    
        def read_excel(self,file_path,sheet_name):
            '''
            file_path: 需要读取取文件的路径
            sheet_name: 需要读取文件的表单名称
            '''
            result=[]
            wb=xlrd.open_workbook(file_path)
            sheet=wb.sheet_by_name(sheet_name)
            for item in range(1,sheet.nrows):# 1:写了title就默认以1开头,如果没写title就可以省略, sheet.nrows获取总行数
                result.append(sheet.row_values(item))  # row_values:返回所有单元格组成一个list
    
            return result
    
    if __name__ == '__main__':
    
        data_1=ReadExcelOne().read_excel('dome.xlsx','人员信息表')
        print(data_1)
    

    运行结果:

    [['张三', 22.0, '广东', '开发', '12k', '写代码', ''], ['李四', 23.0, '湖南', '运营', '11k', '提需求', ''], ['王五', 28.0, '江西', '人事', '10k', '招聘', '']]
    
    Process finished with exit code 0
    

    方法二:openxlpy(可读可写)这是小编目前用的方法😂😂😂

    注意:此方法是以list嵌套dict,取值某个值用key

    代码如下:

    from openpyxl import load_workbook
    
    class ReadExcelTwo:
    
        def read_excel(self,file_path,sheet_name):
            result=[]
            wb=load_workbook(file_path)
            sheet=wb[sheet_name]
            for item in range(2,sheet.max_row+1):#以openpyxl这种方式默认从1开始读取,这里是要跳过title所以从2开始,sheet.max_row:获取最大行,range方法取头不取尾,所以+1
                sub_data={}
                sub_data['姓名']=sheet.cell(item,1).value
                sub_data['年龄']=sheet.cell(item,2).value
                sub_data['籍贯']=sheet.cell(item,3).value
                sub_data['职位']=sheet.cell(item,4).value
                sub_data['薪资']=sheet.cell(item,5).value
                sub_data['工作内容'] = sheet.cell(item, 6).value
                sub_data['备注']=sheet.cell(item, 7).value
                sub_data['id']=sheet.cell(item, 8).value    #注:这个是新增加的,便于后面将数据写入excel使用,excel没写出来
                result.append(sub_data)
            return resultt
    if __name__ == '__main__':
    
        data_2=ReadExcelTwo().read_excel('dome.xlsx','人员信息表')
        print(data_2)
    

    运行结果:

    [{'姓名': '张三', '年龄': 22, '籍贯': '广东', '职位': '开发', '薪资': '12k', '工作内容': '写代码','id': 1}, {'姓名': '李四', '年龄': 23, '籍贯': '湖南', '职位': '运营', '薪资': '11k', '工作内容': '提需求','id': 2}, {'姓名': '王五', '年龄': 28, '籍贯': '江西', '职位': '人事', '薪资': '10k', '工作内容': '招聘','id': 3}]
    
    Process finished with exit code 0
    
    

    拓展:openpyxl将结果写回Excel(可用于断言时判断测试通过还是失败时将测试结果写回Excel)

    注意:运行时一定要把Excel关闭,不然会报错!!!

    代码如下:

    from openpyxl import load_workbook
    class ReadExcelTwo:
    
        def write_excel(self,file_path,sheet_name,j,value):
             '''
             j:要写入的列号,在实际运用中可以写死,
             value:要写入的值(可以多个)
             '''
             data = DoExcel(file_path, sheet_name).Do_excel()
             for item in data:
                 wb=load_workbook(file_path)
                 sheet=wb[sheet_name]
                 sheet.cell(item['id']+1,j).value=value
                 wb.save(file_path)   #保存
    
    if __name__ == '__main__':
         ReadExcelTwo().write_excel(r'dome.xlsx','人员信息表',7,'搞事情,搞事情~~')
         data_2=ReadExcelTwo().read_excel('dome.xlsx', '人员信息表')
         print(data_2)
    

    运行结果:

    [{'姓名': '张三', '年龄': 22, '籍贯': '广东', '职位': '开发', '薪资': '12k', '工作内容': '写代码', '备注': '搞事情,搞事情~~'}, {'姓名': '李四', '年龄': 23, '籍贯': '湖南', '职位': '运营', '薪资': '11k', '工作内容': '提需求', '备注': '搞事情,搞事情~~'}, {'姓名': '王五', '年龄': 28, '籍贯': '江西', '职位': '人事', '薪资': '10k', '工作内容': '招聘', '备注': '搞事情,搞事情~~'}]
    
    Process finished with exit code 0
    

    附上一张截图:


    20200829155402.png

    搞定!!!
    似不似很简单啊,hhh~~~
    最后一个pandas更简单,但是我还在学习中哈哈哈~~~,等我理顺了,再分享出来,持续关注哦!!!

    2020 2.4优化:

    • 方法一中xlrd2.0.1库以上版本不支持.xlsx格式文件
    • 方法二中读取excel新增了id列,写入excel方法有优化,目前还没有实践,若有错误请留言

    持续更新中~~~

    相关文章

      网友评论

          本文标题:3种方法手把手教你从Excel读取数据(一)

          本文链接:https://www.haomeiwen.com/subject/tufjsktx.html