4.接口自动化测试-读取excel文件3.0

1.优化内容:

当用户需要仅执行测试用例里面指定的某一条或某几条用例运行时
具体方案:(用例筛选)
(1)全部执行
(2)分段执行 用例01-用例07
(3)随机执行某一个 用例03
(4)混和模式[用例01,用例03-用例07,用例09]

"""
函数名:def get_excel_data()
版本:v3.0
函数功能:
(1)获取请求的body与预期的响应结果
(2)可以自定义获取对应的列数据
(3)需要获取测试用例里面指定的某几条用例运行
具体方案:(用例筛选)
    (1)全部执行
    (2)分段执行 用例01-用例07
    (3)随机执行某一个 用例03
    (4)混和模式[用例01,用例03-用例07,用例09]
框架层Pytest只能定制化执行接口层-跑某一个接口,或不跑 某一个接口
但是:具体的测试用例的挑选,框架做不了
pytest框架:靠一个数据驱动的装饰器执行 @pytest.mark.paramzied(excel挑选出来的用例)

"""
# --------------- v3.0 --------------
import xlrd

# 可变数量参数*args(可以传多个参数),元组形式
#selectCase=['all'],如果不指定,就默认全部执行
#caseName参数:用例编号
def get_excel_data(excelDir, sheetName, caseName,*colName,selectCase=['all']):
    resList=[]
    # formatting_info 保持原样式
    workBook = xlrd.open_workbook(excelDir, formatting_info=True)
    workSheet = workBook.sheet_names()  # 获取所有表名
    # 获取具体的表(模块)
    workSheet = workBook.sheet_by_name(sheetName)
    """
    函数调用者使用列名:标题,url
    代码真正操作:使用列的编号
    思路转化:把函数调用者输入的列名转为列编号
    """
# --------------指定列名----------------------
    colIdxList = []#函数调用者输入列名,转化后的列编号-用列表存放
    for i in colName:#遍历用户输入的列名colName是元组
        num=workSheet.row_values(0).index(i)#取出第0行,然后按值求下边(列表求下标)
        colIdxList.append(num)
    print('列编号--',colIdxList)

# ————————————————————————————————————
    """
    函数调用者指定某一条或某一段用例编号
    """

# ---------------挑选用例执行---------------------
    selectList=[]
    if 'all' in selectCase:#全部执行,一整列数据col_values(0)
        selectList=workSheet.col_values(0)
    else:
         # 1.某一个  2.某一段
        for one in selectCase:
            if '-' in one:#是-,代表执行一段.需要切割['03-06]
                start,end=one.split('-')# 03 06
                for i in range(int(start),int(end)+1):#3,7
                    # {i:>03}保证3位,不够补0.
                    # 拼接用例编号-接口名+编号==Login3---Login003
                    selectList.append(caseName+f'{i:0>3}')
            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 colIdxList:#遍历列名转化后的列编号,拿到所有需要的列(colIdx)
                res = workSheet.cell_value(idx,colIdx)#读取某一个单元格数据
                getColData.append((res))
            resList.append(getColData)
        idx+=1
    return  resList


if __name__ == '__main__':
    configData=['用例编号','标题','url']
    #代码的装包和解包
    #*configData--将元组、列表解成单个元素
    res=get_excel_data('../data/Delivery.xls', '登录模块','Login',*configData,selectCase=['001','003-004'])
    print(res)
    for one in res:
        print(one)
"""
测试反馈:
1.如果是普通字符串-不需要转化
2.如果是json字符串-需要转为字典,因为后续接口需要子弟啊格式
建议:需要转化json字符串的形式
"""
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值