zoukankan      html  css  js  c++  java
  • 接口中导入excel测试数据(详)

    此篇通过项目来实现怎样导入Excel表格中的测试用例

    一、编写一个读取Excel数据的函数

    功能:传一个Excel的位置和第几个工作表,返回数据列表

    名词:workBook==工作簿==Excel

             workSheet==工作表==sheet

    Excel表格中从0开始读取

     

    导入:import  xlrd

    步骤:

    定义一个函数:

    def readExcel(filePath,sheet_index):
    01:打开Excel,获取【workBook】对象
    workBook = xlrd.open_workbook(filePath)#路径

    02:从工作簿中,获取【workSheet】对象

    第一种方法:
    workSheet = workBook.get_sheet(sheet_index)#第几个工作表(索引)
    第二种方法:
    workSheet = workBook.sheet_by_name('工作表名')
    第三种方法:
    workSheet = workBook.sheet_by_index(sheet_index)
    第四种方法:
    workSheet=workBook.sheets()[索引]

    获取总行数:

    nrows = workSheet.nrows

    获取某行数据:

    row=workSheet.row_values(行号)

    03:对【workSheet】工作表进行循环-逐型行取出数据,放入列表中

        retList=[]
        for i in range(1,nrows): #range左包含右不包含  读45条记录
            #返回的是一个list,得到的是第几行数据
            oneRow = workSheet.row_values(i)
            retList.append(oneRow)
        return retList

    04:返回数据列表

    List=readExcel('测试用例路径',0)
    print(list)

    二、发送Excel表格数据

    功能:传一行Excel数据行(列表格式),返回请求结果(字典格式)

    import json
    from API项目.lib.courseLIb import add,delete,modify
    from API项目.lib.excelManger import readExcel
    import time
    import sleep
    
    
    def SendCourseRequest(row):
        # print(row)  # 传入的是一行数据,也就是一个测试用例
        colus5 = row[4]  # 第5列的值
        # # 第6列的值,用json.loads方法,把字符串转化为字典格式
        colus6 = json.loads(row[5])
        # ret = None
        if colus5 == 'add':
            # print(colus6['name'])# 课程名称
            courseName = colus6['name']  # 获取课程名称
            # 把关键字:{{courseName}} 替换成时间戳
            courseName = courseName.replace('{{courseName}}', str(int(time.time() * 100)))
            ret = add(courseName, colus6['desc'], colus6['display_idx'])
            # print(ret)
            test = json.loads(row[6])
            if (ret['retcode']==test['code']):
                print(row[0],'测试通过')
        # elif colus5 == 'list':
        #     ret = list(colus6['pagenum'], colus6['pagesize'])
        # elif colus5 == 'delete':
        #     ret = delete(colus6['id'])
        # return ret
    
    
    list=readExcel(r'E:ijizongjieAPI项目data教管系统-测试用例V1.2.xls',0)
    # print(list)
    for i in range(0,len(list)):
        SendCourseRequest(list[i])
        time.sleep(1)

    三、写入测试结果到Excel

    01:调用函数读取测试用例

    02:调用《课程管理》函数执行

    from API项目.lib.excelManger import readExcel
    from API项目.lib.sendCourseRequest import SendCourseRequest
    import time
    
    #1-读取测试用例
    list=readExcel(r'E:ijizongjieAPI项目data教管系统-测试用例V1.2.xls',0)
    # print(list)
    #2-执行测试用例
    dictBody=[]
    for i in range(0,len(list)):
        row=list[i]
        dictBody=SendCourseRequest(row)
        dictBody.append(dictBody)
        time.sleep(1)

    03:执行结果写回Excel

    导入:from xlutils.copy import copy

    1):复制一个全新的Excel

    def getNewExcel(filePath):
        #1-1打开Excel,得到workBook对象
        workBook = xlrd.open_workbook(filePath)
        #1-2 复制一个全新的工作簿
        workBookNew = copy(workBook)
        return workBookNew
    
    调用
    workBookNew = getNewExcel(‘路径’)

    保证输出的Excel表格格式存在:

    加入一个参数:formattings_info=True

    workBook = xlrd.open_workbook(filePath,formattings_info = True)

    2):在新的Excel中得到第一个工作表

    workSheetNew= workBookNew.sheet_by_index(0)

    3):执行用例,在第7、8列写内容

    for i in range(0,len(list)):
        row=list[i]
        dictBody=SendCourseRequest(row)
        time.sleep(1)
        test = json.loads(row[6])
        if (dictBody['retcode'] == test['code']):
            print(row[0], '测试通过')
            workSheetNew.write(i+1,7,'PASS')
        else:
            print('row[0]','测试不通过')
            workSheetNew.write(i + 1,7, 'FAIL')
            workSheetNew.write(i + 1,8, dictBody['reason'])

    4):保存

    workBookNew.save('路径')

    总结

    1-demo==评审接口文档

    2-编写测试用例

    3-执行Excel中的测试用例

    3.1定义一个函数,读取测试用例,返回列表

    3.2循环列表,发送请求-返回结果(还调用了之前封装的函数)

    3.3返回的结果需要写入Excel中

     

  • 相关阅读:
    升/降压转换器 (Buck-boost)
    升压转换器 (Boost)
    降压转换器 (Buck)
    线性稳压器 (LDO)
    电源管理组件选择指南
    AC/DC 反激 (Flyback) 控制器
    SEPIC 单端初级电感转换器 稳压器 -- Zeta 转换器
    LT3759 宽输入电压范围升压 / 负输出 / SEPIC 控制器 可在输入电压低至 1.6V 的情况下工作
    LT1961 升压型稳压器造就了兼具升压和降压能力的扁平状SEPIC
    Level-shifting nixes need for dual power supply
  • 原文地址:https://www.cnblogs.com/kelly11/p/12817725.html
Copyright © 2011-2022 走看看