zoukankan      html  css  js  c++  java
  • python接口自动化学习笔记(封装方法用于读取excel)

    from collections import namedtuple
    from openpyxl import load_workbook
    
    # 1.如何将一些操作(Excel读写)进行封装?(写出封装的思路)
    # a、加载excel文件,定位表单;
    # b、定位单元格,读取所有用例数据;
    # c、遍历所有单元格数据,或使用ddt;
    # d、写入指定单元格数据,保存excel文件;
    
    class ReadExcelData(object):
        """封装读取excel表单数据的工具类"""
    
        def __init__(self, file_path, sheet_name=None):
            """
            初始化openpy加载excel文件
            定位表单及初始化参数
            """
            self.file_path = file_path
            self.sheet_name = sheet_name
            # 打开已存在Excel文件
            self.wb = load_workbook(self.file_path) #打开指定的excel
            # 定位表单
            self.ws = self.wb[self.sheet_name] if self.sheet_name is not None else self.wb.active  # 获取第一个表单
            self.sheet_head_tuple = tuple(self.ws.iter_rows(max_row=self.ws.min_row, values_only=True))[0]
            self.cases_list = []  # 定义一个存放元组的对象
            self.Cases = namedtuple("cases", self.sheet_head_tuple)  # 创建一个命名元组类
    
        def get_all_cases(self):
            """
            获取excel所有测试用例
            """
            for tuple_data in self.ws.iter_rows(min_row=self.ws.min_row + 1, values_only=True):  # 每次遍历,返回由某行所有单元格值组成的一个元组
                self.cases_list.append(self.Cases(*tuple_data))
            return self.cases_list
    
        def get_one_case(self, row):
            """
            获取一条case
            :return一个case对象
            """
            if isinstance(row, int) and (self.ws.min_row + 1 <= row <= self.ws.max_row):
                return tuple(self.ws.iter_rows(min_row=row, max_row=row, values_only=True))[0]
            else:
                print("传入行号不正确,应为大于1的整数!")
    
        def write_file(self, row, actul_result, result_status):
            '''
            执行用例结果写入excel,并保存
            '''
            if isinstance(row, int) and (self.ws.min_row + 1 <= row < self.ws.max_row):
                self.ws.cell(row=row, column=self.ws.max_column - 1, value=actul_result)
                self.ws.cell(row=row, column=self.ws.max_column, value=result_status)
                self.wb.save(self.file_path)
            else:
                print("处理失败!")
    
    if __name__ == '__main__':
        file_path = u'E:\heguanghua\python\接口自动化\api.xlsx'
        sheet_name = 'Sheet1'
        res = ReadExcelData(file_path,sheet_name).get_all_cases()
        print(res)
        print('================================================')
        re = ReadExcelData(file_path,sheet_name).get_one_case(2)
        print(re)
    
  • 相关阅读:
    hive+mysql安装
    (转)hive sql 学习笔记(1)
    「CSPS 2020」动物园
    「CSPS 2019」Emiya 家今天的饭
    「CSPS 2020」儒略日
    「CSPS 2019」划分
    poj2251 Dungeon Master 搜索BFS
    poj1080 Human Gene Functions
    poj2349最小生成树prim算法
    hoj1356 Miller_Rabbin算法
  • 原文地址:https://www.cnblogs.com/hghua/p/13279308.html
Copyright © 2011-2022 走看看