首页 > 编程语言 >python封装工具类之excel读写

python封装工具类之excel读写

时间:2024-04-17 12:33:06浏览次数:28  
标签:wb python 读写 excel sheetname ws self row

在python自动化过程中,如果测试用例数据在excel中,就需要去对excel进行读写操作

这个测试类主要是读取excel中的测试用例,然后再将测试结果回写到excel中。

excel表格格式示例(cases.xlsx):

case_id case_name method url data expected actual result
1 用户正常登录 post /login {"usename":"zhangsan", "pwd": 123456} success success pass
2 密码错误登录 post /login {"usename":"zhangsan", "pwd": 123} unsuccess unsuccess pass

 

 

 

 

 

# -*- coding: utf-8 -*-

# 1. 某些操作中, 会改变的内容把它抽离出来 使用python中openpyxl模块进行封装
from openpyxl import load_workbook


class HandleExcel:
    """
    定义处理excel的类
    """
    def __init__(self, filename, sheetname=None):
        self.filename = filename
        self.sheetname = sheetname

    def get_cases(self):
        """
        获取所有的测试用例
        :return:
        """
        wb = load_workbook(self.filename)
        if self.sheetname is None:
            ws = wb.active
        else:
            ws = wb[self.sheetname]
        # 获取excel表头信息
        head_data_tuple = tuple(ws.iter_rows(max_row=1, values_only=True))[0]
        one_list = []
        # 将从第二行开始,每一条用例和表头相对应,组成嵌套字典的列表
        for one_tuple in tuple(ws.iter_rows(min_row=2, values_only=True)):
            one_list.append(dict(zip(head_data_tuple, one_tuple)))

        return one_list

    def get_case(self, row):
        """
        获取指定某一行的用例
        :param row: 行号
        :return:
        """
        return self.get_cases()[row-1]
    
    def write_result(self, row, actual, result):
        """
        在指定的行写入数据
        :param row: 行号
        :param actual: 实际结果
        :param result: 用例执行的结果(Pass或者Fail)
        :return:
        """
        # 同一个Workbook对象, 如果将数据写入到多个表单中, 那么只有最后一个表单能写入成功
        other_wb = load_workbook(self.filename)
        if self.sheetname is None:
            other_ws = other_wb.active
        else:
            other_ws = other_wb[self.sheetname]
        if isinstance(row, int) and (2 <= row <= other_ws.max_row):
            other_ws.cell(row=row,
                          column=do_config.get_int("excel", "actual_col"),
                          value=actual)
            other_ws.cell(row=row,
                          column=do_config.get_int("excel", "result_col"),
                          value=result)
            other_wb.save(self.filename)
            other_wb.close()
        else:
            print("传入的行号有误, 行号应为大于1的整数")


if __name__ == '__main__':
    filename = "cases.xlsx"
    do_excel = HandleExcel(filename)
    cases = do_excel.get_cases()
    do_excel.write_result(2, "pass", "pass")
    pass

 

标签:wb,python,读写,excel,sheetname,ws,self,row
From: https://www.cnblogs.com/xingyunqiu/p/18140303

相关文章

  • Python 数据结构和算法实用指南(三)
    原文:zh.annas-archive.org/md5/66ae3d5970b9b38c5ad770b42fec806d译者:飞龙协议:CCBY-NC-SA4.0第七章:哈希和符号表我们之前已经看过数组和列表,其中项目按顺序存储并通过索引号访问。索引号对计算机来说很有效。它们是整数,因此快速且易于操作。但是,它们并不总是对我们很有效......
  • [Python]OS模块应用
    OS提供许多和操作系统交互的功能,允许访问文件,目录,进程,环境变量等。导入模块,importos获取当前工作目录,os.getcwd()current_dir=os.getcwd()print("当前工作目录:",current_dir)>>>当前工作目录:C:\Users\wuyucun创建目录,os.mkdir()current_dir=os.getcwd()......
  • Python 数据结构和算法实用指南(一)
    原文:zh.annas-archive.org/md5/66ae3d5970b9b38c5ad770b42fec806d译者:飞龙协议:CCBY-NC-SA4.0前言数据结构和算法是信息技术和计算机科学工程学习中最重要的核心学科之一。本书旨在提供数据结构和算法的深入知识,以及编程实现经验。它专为初学者和中级水平的研究Python编......
  • Python 数据结构和算法实用指南(二)
    原文:zh.annas-archive.org/md5/66ae3d5970b9b38c5ad770b42fec806d译者:飞龙协议:CCBY-NC-SA4.0第四章:列表和指针结构我们已经在Python中讨论了列表,它们方便而强大。通常情况下,我们使用Python内置的列表实现来存储任何数据。然而,在本章中,我们将了解列表的工作原理,并将研......
  • Settings属性读写
    Settings系统属性存储均为xml,分三种:1.global:所有的偏好设置对系统的所有用户公开,第三方APP有读没有写的权限;对应xml路径:/data/system/users/0/settings_global.xmladb指令读写方法:先adbshell进入终端。读为settingsgetglobal系统属性key写为settingsputglobal系统属......
  • python生成exe
    pyinstaller:PyInstaller是一个用于打包Python应用程序的工具,它可以将Python脚本打包成可执行文件,无需依赖外部Python解释器。你可以使用PyInstaller来将整个文件夹中的多个Python文件打包成一个可执行文件。你可以通过以下命令安装PyInstaller:pipinstallpyinstal......
  • Python——cProfile(程序分析)
    程序分析可以系统性地分析程序的运行速度、内存使用情况等。cProfile是Python的分析器,用于测量程序的运行时间和程序内各个函数调用消耗的时间。importcProfiledefadd():total=0foriinrange(1,10000001):total+=icProfile.run('add()')'''......
  • python-pptx 学习
      1frompptximportPresentation2frompptx.utilimportInches3frompptx.chart.dataimportChartData4frompptx.enum.chartimportXL_TICK_MARK5frompptx.utilimportPt6frompptx.dml.colorimportRGBColor7frompptx.enum.chartim......
  • 2024.4.16python基础学习
    基本数据类型numberintmoney=6600floatdiscount=1.2boolenisok=trueisok=falsestrings='sssss's="ssssss"ps:单引号与双引号成对出现,不可以混合使用可以单引号嵌套双引号,互相嵌套list(列表)my_list=['足球','篮球']tuple(元组)my_tuple=(12,123,1234)dict(字典)......
  • 【python】如何优雅的终止while循环
    1.背景需求python需要与外界或终端交互时,常常需要使用while循环一直跑。如果需要终止程序,一般使用Ctrl+c,此时终端会打印一大堆backtrace,并且无法保留当前运行的状态,非常不优雅。使用KeyboardInterrupt异常捕捉,可以实现优雅的终止while循环。 2.实现方法try:while(Tr......