编程语言
首页 > 编程语言> > python对excel的处理

python对excel的处理

作者:互联网

v2
‘’’
函数名:def get_excel_data()
版本:v2.0

函数功能:
    1- 获取请求的body与预期的响应结果!
具体方案:
    1- 导入对应的excel读取的库  xlrd 处理xxx.xls 格式 ; openpyxl  xx.xlxs
    2- 把excel文件读取到内存  excel对象
    3- 找到你需要操作的sheet
    4- 读取对应的行与列数据(单元格数据)
'''
import xlrd
def get_excel_data(excelDir,sheetName, caseName):
    resList=[]
    #1,加载excel
    workBook=xlrd.open_workbook(excelDir,formatting_info=True)
    #2,获取对应的一个表
    workSheet = workBook.sheet_by_name(sheetName)
    #3,获取单元格的数据
    # print(workSheet.row_values(0))#获取第0行--excel行号从0开始
    # print(workSheet.col_values(0))  # 获取第0列--excel列号从0开始
    # print(workSheet.cell_value(0,0))#获取某一个单元格数据 cell_value(行号,列号)
    idx=0 #代表行号的初始值
    for one in workSheet.col_values(0):
        if caseName in one:
            # 条件满足,这一行数据的对应列是需要的数据
            resBody = workSheet.cell_value(idx,9)
            respData = workSheet.cell_value(idx,11)
            resList.append((resBody,respData))
        idx += 1
    return resList
if __name__ == '__main__':
    res = get_excel_data('../data/Delivery_System_V1.5.xls','登录模块','Login')
    print(res)
    for one in res:
        print(one)

v3

#-*- coding: utf-8 -*-
#@File    : handle_excel.py
#@Time    : 2021/9/8 20:35
#@Author  : xintian
#@Email   : 1730588479@qq.com
#@Software: PyCharm
#Date:2021/9/8 
print()
"""
函数名:def get_excel_data()
版本:v3.0
函数功能:
    1- 获取请求的body与预期的响应结果!
    2- 可以自定义获取对应的列数据
    3- 需要获取测试用例的里面指定的用例运行!
具体方案:
    用例筛选!
        1- 全部执行  all
        2- 分段执行  tc001-tc003  tc005-tc007
        3- 随机执行某一个 tc001  tc004  tc008
        4- 混合模式:['tc001','tc003-tc007',‘tc009’]

框架层pytest只能定制化执行接口层--跑某一个接口,或者不跑某一个接口
但是:具体的测试用例的挑选,框架做不了!
pytest:是靠一个数据驱动装饰器执行  @pytest.mark.parametrize(挑选出来)
"""
#—————————————————————————————v3.0----------------------------------
import xlrd
def get_excel_data(excelDir,sheetName,caseName,*colName,selectCase=['all']):
    resList = []
    #1- 加载excel
    #formatting_info = True   保持样式
    workBook = xlrd.open_workbook(excelDir,formatting_info=True)
    #2- 获取对应具体的一个表
    workSheet = workBook.sheet_by_name(sheetName)

    """
    函数调用者使用列名:标题,URL
    代码真正操作读取数据:还是使用列编号!
    思路的转化:
        把函数调用者的输入的列名--转化---列编号
    """
    #----------------------------------------------------
    colIndxList = []#函数调用者输入列名,转化后的列编号--列表类型
    for i in colName:#遍历用户输入的列名--colName元组
        colIndxList.append(workSheet.row_values(0).index(i))
    print(colIndxList)
    #----------------------------------------------------


    #-----------------------挑选用例执行---------------------------
    selectList = []#挑选出来的用例
    if 'all' in selectCase:#全部执行这个接口的所有用例
        selectList = workSheet.col_values(0)
    else:#1- 某一个   2- 某一段  ['001','003-006']
        for one in selectCase:
            if '-' in one:#是一段用例
                start,end = one.split('-')# 3,6
                for i in range(int(start),int(end)+1):#(3,7)---3,4,5,6
                    selectList.append(caseName+f'{i:0>3}')#Login3---Login003
            else:
                selectList.append(caseName+f'{one:0>3}')
    #-------------------------------------------------------
    idx = 0#代表行号的初始值
    for one in workSheet.col_values(0):#获取第0列数据
        if caseName in one and one in selectList:
            #条件满足,这一行数据的对应列是需要的数据
            getColData = []#存放一行对应的很多列的数据
            for colIdx in colIndxList:
                res = workSheet.cell_value(idx,colIdx)#读取某一个单元格数据
                getColData.append(res)
            resList.append(getColData)
        idx += 1
    return resList



if __name__ == '__main__':#ctrl+j 快捷键
    configData = ['用例编号','标题','URL','请求参数']
    res = get_excel_data('../data/Delivery_System_V1.5.xls','登录模块','Login',*configData,selectCase=['001','003','006','all'])
    #print(res)
    for one in res:
        print(one)


"""
测试反馈:
    1- 如果是普通的字符串---不需要转化
    2- 是json字符串---需要转化成字典--因为后续的接口需要字典格式


"""





标签:__,python,workSheet,excel,处理,res,print,data
来源: https://blog.csdn.net/Sophia_Xu01/article/details/120637168