ICode9

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

十四、excel封装与应用

2022-03-01 09:04:53  阅读:226  来源: 互联网

标签:封装 res self excel item login 十四 data cases


excel封装与应用:

ddt与excel的基本使用

```python
import unittest
from unittestreport import ddt, list_data
import openpyxl
from testcases.login import login_dxc
#创建工作簿对象
wookbook = openpyxl.load_workbook(r'E:\Study\datas\cases.xlsx')
#选择表单
sh = wookbook['login']
#按行读取login表单中所有的内容,并转换为列表
res = list(sh.rows)
#通过索引读取第一行数据
tetle = [i.value for i in res[0]]
#创建一个空列表
cases = []
#遍历除第一行之外的所有内容
for items in res[1:]:
    ress = [i.value for i in items]
    #打包为字典
    dic = dict(zip(tetle, ress))
    #添加到cases这个空列表中
    cases.append(dic)

#使用ddt要在类名前@ddt
@ddt
class TestLog(unittest.TestCase):
    #方法前@data
    @list_data(cases)
    #创建一个item参数用来接收cases的数据
    def test_login_27(self, item):
        # 准备用例数据,读取对应的数据,并识别字符串中的有效python表达式
        expected = eval(item['expect'])
        data = eval(item['data'])
        # 调用功能函数
        resss = login_dxc(**data)
        #断言
        self.assertEqual(expected, resss)
```

对操作excel数据处理模块的封装

```python
import openpyxl

#创建一个操作excel的类
class HandleXlsx:

    def __init__(self, filename, sheetname):
        """
        操作xlsx文件的封装
        :param filename: 文件名或者路径
        :param sheetname: 表单名
        """
        self.filename = filename
        self.sheetname = sheetname

    def read_data(self):
        """
        读取xlsx文件的方法
        :return: 返回读取的内容并返回数据格式为列表嵌套字典的形式
        """
        #加载工作簿对象
        wookbook = openpyxl.load_workbook(self.filename)
        sh = wookbook[self.sheetname]
        #读取所有数据,转换为列表
        res = list(sh.rows)
        #获取第一行标题
        title = [i.value for i in res[0]]
        cases = []
        #遍历除第一行之外的数据
        for item in res[1:]:
            data = [i.value for i in item]
            dic = dict(zip(title, data))
            cases.append(dic)
        #返回读取的数据
        return cases

    def write_data(self, row, column, value):
        """
        写入xlsx文件的方法
        :param row: 写入的行
        :param column:写入的列
        :param value: 写入的内容
        """
        #加载工作簿对象
        wookbook = openpyxl.load_workbook(self.filename)
        sh = wookbook[self.sheetname]
        #写入数据
        sh.cell(row=row, column=column, value=value)
        wookbook.save(self.filename)

```

对封装的excel模块的使用

```python
import unittest
from unittestreport import ddt, list_data
from common.handle_excel import HandleXlsx
from testcases.login import login_dxc


@ddt
class TestLog(unittest.TestCase):
    #读取数据,写在类里面有利于区分
    res = HandleXlsx(filename=r'E:\Study\datas\cases.xlsx', sheetname='login')
    cases = res.read_data()

    @list_data(cases)
    def test_login_27(self, item):
        # 准备用例数据
        expected = eval(item['expect'])
        data = eval(item['data'])
        # 调用功能函数
        resss = login_dxc(**data)
        number = item['case_id'] + 1
        try:
            self.assertEqual(expected, resss)
        #捕获断言异常
        except AssertionError as e:
            #如果捕获到断言失败,则写入excel中
            self.res.write_data(row=number, column=5, value='测试失败')
            #抛出异常,让unittest捕获
            raise e
        else:
            #如果没有断言异常,则写入excel中
            self.res.write_data(row=number, column=5, value='测试通过')
```

标签:封装,res,self,excel,item,login,十四,data,cases
来源: https://blog.csdn.net/weixin_54641346/article/details/123197158

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

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

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

ICode9版权所有