• 自动化测试代码阅读-python将中间excel封装成RobotFramework的关键字


    1.业务场景

    利用python代码将中间excel生成RobotFramework支持的关键字

    2.完整代码和数据

    https://github.com/O-Aiden/AutomatedTesting/tree/master/apitest/Common

    3.思维导图

    4.核心代码

    #! /usr/bin/python
    # coding:utf-8
    """
    @From:https://www.cnblogs.com/Detector/p/10211679.html
    @author:Bingo.he
    @Add:Yuki
    @file: operate_xls.py
    @time: 2019/01/01
    """
    import xlrd
    
    # from 接口测试.InterfaceTestFrameWork.common.common import logger
    
    
    class OperateXls:
        def __init__(self, xls_ile, index):
            self.book = xlrd.open_workbook(xls_ile, encoding_override='utf-8')
            self.sheet = self.book.sheet_by_index(index)  # 通过sheet索引获得sheet对象
    
        def switch_sheet_index(self, count):
            """
            通过index切换sheet对象
            :param count:
            :return:
            """
            self.sheet = self.book.sheet_by_index(count)
    
        def switch_sheet_by_name(self, sheet_name):
            """
            通过sheet name 切换 sheet对象
            :param sheet_name:
            :return:
            """
            self.sheet = self.book.sheet_by_name(sheet_name)
    
        def sheet_name_by_index(self, count):
            return self.book.sheet_names()[count]  # 获得指定索引的sheet表名字
    
        def get_value(self, rowx, colx):
            return self.sheet.cell_value(rowx, colx)
    
        def sheet_params_by_name(self, sheet_name):
            """
            返回sheet页所有数据
            :param sheet_name:
            :return: sheet data format: {row_num:[data of column1,data of column2....]}
            """
            all_data = {}
            row_data = []
            sheet = self.book.sheet_by_name(sheet_name)  # 通过sheet名字来获取
            row_num = sheet.nrows  # 获取行总数
            cols_num = sheet.ncols  # 获取行总数
            # logger.info("有效数据行数: " + str(row_num))
            # logger.info("有效数据列数: :" + str(cols_num))
            for i in range(0, row_num):
                for c in range(cols_num):
                    row_data.append(sheet.cell_value(i, c))  # 获取指定EXCEL文件中,第一个SHEET中的接口字段名
                all_data[i] = row_data
                row_data = []
            # logger.info(str(json.dumps(all_data, indent=4)))
            # logger.info(str(all_data))
            return all_data
    
        def sheet_params_by_index(self, index):
            """
            返回sheet页所有数据
            :param index:
            :return: sheet data format: {row_num:[data of column1,data of column2....]}
            """
            all_data = {}
            row_data = []
            sheet = self.book.sheet_by_index(index)  # 通过sheet名字来获取
            row_num = sheet.nrows  # 获取行总数
            cols_num = sheet.ncols  # 获取行总数
            # logger.info("有效数据行数: " + str(row_num))
            # logger.info("有效数据列数: :" + str(cols_num))
            for i in range(0, row_num):
                for c in range(cols_num):
                    row_data.append(sheet.cell_value(i, c))  # 获取指定EXCEL文件中,第一个SHEET中的接口字段名
                all_data[i] = row_data
                row_data = []
            # logger.info(str(json.dumps(all_data, indent=4)))
            # logger.info(str(all_data))
            return all_data
    
    
    class ReadRFExcel(OperateXls):
        def rf_xls_param_type(self):
            return self.get_value(1, 0)  # 获取'B2'字段内容
    
        def rf_xls_param_value(self):
            return self.get_value(1, 1)  # 获取'B2'字段内容
    
        def rf_xls_msg_type(self):
            return self.get_value(1, 3)  # 获取'D2'字段内容
    
        def rf_xls_method(self):
            return self.get_value(1, 6)  # 获取'G2'字段内容
    
        def rf_xls_url(self):
            return self.get_value(1, 7)  # 获取'H2'字段内容
    
        def rf_xls_group(self):
            return self.get_value(1, 8)  # 获取'I2'字段内容
    
        def rf_xls_document(self):
            return self.get_value(1, 9)  # 获取'J2'字段内容
    
        def rf_xls_headers(self):
            return self.get_value(1, 10)  # 获取'K2'字段内容
    
    if __name__ == '__main__':
    
        op = ReadRFExcel("/Users/Shared/Relocated Items/Security/长期文件/自动化测试/APITest/Common/Testscript/data/detector_post.xls", 0)
        print(op.rf_xls_headers())
        op.switch_sheet_index(0)
        op.rf_xls_headers()
        op.sheet_params_by_index(0)
        op.sheet_name_by_index(0)
    gen_common_kw.py
    #! /usr/bin/python
    # coding:utf-8
    """
    @creator:Bingo.he
    @modifier:Yuki
    @file: operate_xls.py
    @time: 2020/09/09
    """
    import xlrd
    
    # from 接口测试.InterfaceTestFrameWork.common.common import logger
    
    
    class OperateXls:
        def __init__(self, xls_ile, index):
            self.book = xlrd.open_workbook(xls_ile, encoding_override='utf-8')
            self.sheet = self.book.sheet_by_index(index)  # 通过sheet索引获得sheet对象
    
        def switch_sheet_index(self, count):
            """
            通过index切换sheet对象
            :param count:
            :return:
            """
            self.sheet = self.book.sheet_by_index(count)
    
        def switch_sheet_by_name(self, sheet_name):
            """
            通过sheet name 切换 sheet对象
            :param sheet_name:
            :return:
            """
            self.sheet = self.book.sheet_by_name(sheet_name)
    
        def sheet_name_by_index(self, count):
            return self.book.sheet_names()[count]  # 获得指定索引的sheet表名字
    
        def get_value(self, rowx, colx):
            return self.sheet.cell_value(rowx, colx)
    
        def sheet_params_by_name(self, sheet_name):
            """
            返回sheet页所有数据
            :param sheet_name:
            :return: sheet data format: {row_num:[data of column1,data of column2....]}
            """
            all_data = {}
            row_data = []
            sheet = self.book.sheet_by_name(sheet_name)  # 通过sheet名字来获取
            row_num = sheet.nrows  # 获取行总数
            cols_num = sheet.ncols  # 获取行总数
            # logger.info("有效数据行数: " + str(row_num))
            # logger.info("有效数据列数: :" + str(cols_num))
            for i in range(0, row_num):
                for c in range(cols_num):
                    row_data.append(sheet.cell_value(i, c))  # 获取指定EXCEL文件中,第一个SHEET中的接口字段名
                all_data[i] = row_data
                row_data = []
            # logger.info(str(json.dumps(all_data, indent=4)))
            # logger.info(str(all_data))
            return all_data
    
        def sheet_params_by_index(self, index):
            """
            返回sheet页所有数据
            :param index:
            :return: sheet data format: {row_num:[data of column1,data of column2....]}
            """
            all_data = {}
            row_data = []
            sheet = self.book.sheet_by_index(index)  # 通过sheet名字来获取
            row_num = sheet.nrows  # 获取行总数
            cols_num = sheet.ncols  # 获取行总数
            # logger.info("有效数据行数: " + str(row_num))
            # logger.info("有效数据列数: :" + str(cols_num))
            for i in range(0, row_num):
                for c in range(cols_num):
                    row_data.append(sheet.cell_value(i, c))  # 获取指定EXCEL文件中,第一个SHEET中的接口字段名
                all_data[i] = row_data
                row_data = []
            # logger.info(str(json.dumps(all_data, indent=4)))
            # logger.info(str(all_data))
            return all_data
    
    
    class ReadRFExcel(OperateXls):
        def rf_xls_param_type(self):
            return self.get_value(1, 0)  # 获取'B2'字段内容
    
        def rf_xls_param_value(self):
            return self.get_value(1, 1)  # 获取'B2'字段内容
    
        def rf_xls_msg_type(self):
            return self.get_value(1, 3)  # 获取'D2'字段内容
    
        def rf_xls_method(self):
            return self.get_value(1, 6)  # 获取'G2'字段内容
    
        def rf_xls_url(self):
            return self.get_value(1, 7)  # 获取'H2'字段内容
    
        def rf_xls_group(self):
            return self.get_value(1, 8)  # 获取'I2'字段内容
    
        def rf_xls_document(self):
            return self.get_value(1, 9)  # 获取'J2'字段内容
    
        def rf_xls_headers(self):
            return self.get_value(1, 10)  # 获取'K2'字段内容
    operate_xls.py

    5.参考链接

    https://www.cnblogs.com/Detector/p/10211679.html

    文中可能存在描述不正确,欢迎园子里的大神们指正补充! 感谢您的阅读,如果觉得对您有帮助,就在右下角点个赞吧,感谢!
  • 相关阅读:
    弹出框背景色透明滚动条滚动仍然居中
    日常css和js小知识点记录
    手机端上传未知图片大小,js设置宽高比例
    IE6兼容透明背景图
    css考核点整理(七)-css sprites技术的使用心得
    css考核点整理(六)-水平居中定位的几种方式
    css考核点整理(五)-css3新增的常用属性
    css考核点整理(四)-css盒模型
    css考核点整理(三)-css选择器的使用
    css考核点整理(二)-css层叠机制
  • 原文地址:https://www.cnblogs.com/ioyuki/p/13641763.html
Copyright © 2020-2023  润新知