有很多朋友对从excel的取值不知道如何遍历的可以学习下面方法:

方式一:

excel样式:

 

 

from openpyxl import load_workbook
from conf import read_path
import os

class DoExcel:
    def __init__(self,file_path,sheet_name):
        self.file_path=file_path
        self.sheet_name=sheet_name

    def do_excel(self):
        wb=load_workbook(self.file_path)
        sheet=wb[self.sheet_name]
        test_data=[] #所有行的数据存到这个列表里面
        for i in range(2,sheet.max_row+1):
            sub_data={}  #每一行用例的数据存在一个字典里面
            sub_data['case_id']=sheet.cell(i,1).value
            sub_data['title']=sheet.cell(i,2).value
            sub_data['method']=sheet.cell(i,3).value
            sub_data['url']=sheet.cell(i,4).value
            sub_data['param']=sheet.cell(i,5).value
            test_data.append(sub_data)
        return test_data

if __name__ == '__main__':
     path=os.path.join(read_path.test_data_path)
     test_data=DoExcel(path,'test_data').do_excel()
     print(test_data)

 

方式二:

 

 代码如下:

import os

from openpyxl import load_workbook
from loguru import logger


# 类与上面的代码/注释之间隔2行
class HandleExcel:

    # 类内部方法之间,用一行隔开。
    def __init__(self,excel_path: str,sheet_name):
        """
        打开一个excel文件,然后加载进来。
        :param excel_path:
        """
        logger.info("当前打开的excel文件为:{}".format(excel_path))
        try:
            self.wb = load_workbook(excel_path)
        except:
            logger.exception("excel文件加载失败!")
            raise

        self.select_sheet_by_name(sheet_name)

    def select_sheet_by_name(self,sheet_name):
        self.sh = self.wb[sheet_name]
        logger.info("当前正在操作的表单名是:{}".format(sheet_name))

    def read_all_rows_data(self):
        """
        从选定的表单当中,第一行作为key.
        将后面的每一行数据,与第一行拼接成一个字典数据,作为一条测试用例数据。
        将所有测试用例数据,添加到一个列表当中。
        :return: 测试用例数据列表
        """
        sh_all_datas = list(self.sh.values)
        # 每一行数据的keys
        keys = sh_all_datas[0]
        # 列表变量 - 存放表单当中的每一行数据
        all_cases_datas = []
        # 遍历表单表当中,从第2行开始的每一行测试数据,并与第一行的keys拼接成一个字典。
        for values in sh_all_datas[1:]:
            one_case = dict(zip(keys, values))
            logger.info("用例数据为:\n{}".format(one_case))
            all_cases_datas.append(one_case)
        return  all_cases_datas



if __name__ == '__main__':
    # 得到excel文件的路径
    file_dir = os.path.dirname(os.path.abspath(__file__))
    # print(file_dir)
    excel_path = os.path.join(file_dir, "apitest.xlsx")
    # \print(excel_path)
    # 实例化HandleExcel类
    he = HandleExcel(excel_path,"登录")
    # he.select_sheet_by_name("登录")
    cases = he.read_all_rows_data()

 

原文地址:http://www.cnblogs.com/crdhm12040605/p/16922548.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性