ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

unittest(1):openpyxl结合excel练习

2021-07-10 15:34:29  阅读:165  来源: 互联网

标签:__ Exception openpyxl unittest excel sh data self


Excel用例管理

在项目下,新建一个文件夹:data,文件夹下新建一个cases.xlsx文件,用来存放测试用例。

 

 以下,是一个简单的登录测试用例设计模板

 

 

 

 

 可以根据该表格生成实际结果,并将测试结果写入(Pass、Fail)表格。公众号后台回复:接口测试用例模板,可以获取完整接口测试用例Excle模板。
既然有了用例模板,我们就开始从用openpyxl模块对excel读写数据。如下,在common文件夹下,新建excel_handle.py,用于封装操作excel的类。

添加异常类来控制异常

 

 excel_handle.py

import openpyxl
import os
from common.Exception_handle import excel_Exception
class ExcelHandler(object):
def __init__(self,wbname,sheetname):
self.wbname=wbname
self.sheetname=sheetname
def open_Excel(self):
'''
openpyxl.load_workbook获取excel
再通过列表的形式获得sheet页
:return:
'''
wb=openpyxl.load_workbook(self.wbname)
sh=wb[self.sheetname]
return sh
def get_header(self):
'''
行级元素再sheet页里也是列表存在
调用同一个类的方法也是使用self
'''
sh=self.open_Excel()
head_data=[]
for i in sh[1]:
head_data.append(i.value)
return head_data
def get_data(self):
'''
sh.rows获取所有行数据
data_list所有数据列表
raw_data单行数据列表
:return:
'''
sh=self.open_Excel()
rows=list(sh.rows)
head_data=self.get_header()
data_list=[]
for row in rows[1:]:
raw_data=[]
for cell in row:
raw_data.append(cell.value)
dict_zip=dict(zip(head_data,raw_data))
data_list.append(dict_zip)
return data_list
if __name__ == '__main__':
try:
osPath = os.path.join(os.path.dirname(os.path.dirname(__file__)), r'data/case1.xlsx')
if os.path.exists(osPath):
Ex = ExcelHandler(osPath, 'Second')
print(Ex.get_data())
else:
raise excel_Exception(osPath)
except excel_Exception as e:
print('发现错误')
finally:
print('结束')

Exception_handle.py

class excel_Exception(Exception):
def __init__(self,excel):
self.excel=excel
print('{0}不存在'.format(self.excel))

标签:__,Exception,openpyxl,unittest,excel,sh,data,self
来源: https://www.cnblogs.com/lhTest/p/14993900.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有