每天学习一点:python实现excel测试用例的数据封装

python涉及到excel的测试用例数据封装有几个三方库。比如xlrd、xlutils、xlwt,这3者之间的关系

1.封装excel测试用例读取函数

封装《excel测试用例》读取函数操作步骤
1.打开工作簿
workBook =xlrd.open_workbook(文件路径)
2.获取工作表
workBook_sheet1=workBook.get_sheet(索引)
workBook_sheet2=workBook.sheet_by_name('工作表名称')
workBook_sheet3=workBook.sheet_by_index(索引)
3.获取整行行数
workBook_sheet1.row_values(行号)
workBook_sheet3.nrows

实例一
import xlrd,pprint
#1.打开工作簿,根据路径去打开所在文件路径的工作簿,获取到【workBook 】对象
workBook =xlrd.open_workbook(r'C:\Users\hlhs_cqb\Downloads\test-测试用例V1.2.xls')
#2.从工作簿中,获取【workBook_sheet*】对象
# workBook_sheet1=workBook.get_sheet(1)
workBook_sheet4=workBook.sheets()[1]
workBook_sheet2=workBook.sheet_by_name('test')
workBook_sheet3=workBook.sheet_by_index(0)
#3.获取整行数据,获取行的值或者行数
pprint.pprint(workBook_sheet2.row_values(1))
pprint.pprint(workBook_sheet3.nrows)
pprint.pprint(workBook_sheet4.row_values(1))

2.调用excel执行测试用例

调用excel执行测试用例操作步骤
1.读取excel中的测试用例,返回python列表(我们封装了一个函数)
2.复制一个新的excel
3.对读取到的测试用例列表,进行循环发送请求,返回字典格式的请求结果(我们封装了一个函数)
4.对请求返回的结果,和excel中预期的结果比较,如果一致,则测试通过,如果不一致,则测试不通过,比较的结果写回【复制后的】excel中
5.保存复制后的excel

import xlrd,json,time
from xlutils.copy import copy
from lib.caseLib import CaseManage
#1-1 打开Excel,获取【workBook】 对象
workBook=xlrd.open_workbook(r'../../data/test-测试用例.xls',formatting_info=True)
#1-2 从工作簿中,获取【workSheet】对象
workSheet=workBook.sheet_by_index(0)
#2-对象实例化,CaseManage主要是用于对接口的请求。
cam=CaseManage()
cam.login('test','123456')
#3-1 复制一个工作簿
workBookNew=copy(workBook)
#3-2 打开工作表
workSheetNew=workBookNew.sheet_by_name('test')
#1-3 对工作表进行循环
for i in range(1,workSheet.nrows):
    # 1-4 循环中得到具体的一行数据
    row = workSheet.row_values(i)
    #1-5 拿到第1、5、6、7、列的值。
    if row[4]=='add':
        #获取第五列数据,转换为字典
        data=json.loads(row[5])
        name=data['name']#从字典中获取用例名称属性
        #用例名称的变量,用时间戳替换
        name=name.replace('{{caseName}}',str(int(time.time()*1000)))
        #调用用例新增接口
        dictBody = cm.add(name, data['desc'], data['display_idx'])
        test = json.loads(row[6])
        if (dictBody["retcode"]==test["code"]):
            print(">>>>>测试通过,用例编号:",row[4],row[0])
            workSheetNew.write(i,7,'PASS')
        else:
            print(">>>>>测试不通过,用例编号:",row[4], row[0],dictBody["reason"])
            workSheetNew.write(i, 7, 'FAIL')
            # workSheetNew.write(i, 8, dictBody['reason'])
    elif row[4]=='delete':
        data = json.loads(row[5])
        dictBody = cm.delete(data['id'])
        test = json.loads(row[6])
        if (dictBody["retcode"] == test["code"]):
            print(">>>>>测试通过,用例编号:",row[4], row[0])
            workSheetNew.write(i, 7, 'PASS')
        else:
            print(">>>>>测试不通过,用例编号:",row[4], row[0])
            workSheetNew.write(i, 7, 'FAIL')
    elif row[4]=='list':
        # 获取第五列数据,转换为字典
        data=json.loads(row[5])
        #excel中的参数
        dictBody=cm.list(data["pagenum"],data["pagesize"])

        #获取第七列数据断言
        test=json.loads(row[6])
        if(dictBody["retcode"]==test["code"]):
            print(">>>>>测试通过,用例编号:",row[4], row[0])
            workSheetNew.write(i, 7, 'PASS')
        else:
            print(">>>>>测试不通过,用例编号:",row[4], row[0])
            workSheetNew.write(i, 7, 'FAIL')
            # workSheetNew.write(i, 8, dictBody['reason'])
    elif row[4] == 'modify':
        pass
    else:
        print('未定义:'+row[4])

workBookNew.save(r'../../report/测试结果.xls')

最后为方便大家学习测试,特意给大家准备了一份13G的超实用干货学习资源,涉及的内容非常全面。


包括,软件学习路线图,50多天的上课视频、16个突击实战项目,80余个软件测试用软件,37份测试文档,70个软件测试相关问题,40篇测试经验级文章,上千份测试真题分享,还有2021软件测试面试宝典,还有软件测试求职的各类精选简历,希望对大家有所帮助……

关注我公众号:【程序员二黑】即可获取这份资料了!

如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以加入我们的群:785128166 大家一起讨论交流,里面也有各种软件测试资料和技术交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值