# -*-coding:utf-8 -*- # # --------------------------------------------------------------------------- # ProjectName: study_python # FileName: read_excel.py # Author: xxxxxxx # Datetime: 2024/9/7 10:00 # Description: # 命名规范:文件名全小写+下划线,类名大驼峰,方法和变量小写+下划线连接, # 常量大写,变量和常量用名词,方法用动词 # --------------------------------------------------------------------------- import openpyxl from ApiAutoTese_3 import log from ApiAutoTese_3.common.read_json import read_json from ApiAutoTese_3.common.read_project_ini import Read_Project_Ini from ApiAutoTese_3.common.read_user_ini import Read_User_Ini from ApiAutoTese_3.data_config.settings import * class Read_excel: def __init__(self,username): ini = Read_User_Ini(username) self.ini = Read_Project_Ini() file_path = ini.get_file_path('excel') table_name = ini.get_table_name('table_name') case_path = ini.get_file_path('case') expct_path = ini.get_file_path('expect') sql_path = ini.get_file_path('sql') self.case_dict = read_json(case_path) self.expect_dict = read_json(expct_path) self.sql_dict = read_json(sql_path) try: wb = openpyxl.load_workbook(file_path) self.ws = wb[table_name] except Exception as e: log.error(f'加载excel工作簿和工作表时出错,excel路径为{file_path},工作表为{table_name},错误为{e}') def __get_excel_data(self,column,row): try: cell_value = self.ws[column+str(row)].value except Exception as e: log.error(f'获取单元格{column}{row}数据出错,错误为:{e}') raise e else: if cell_value is None: return None elif cell_value.strip(): return cell_value.strip() def get_module(self,row): return self.__get_excel_data(MODULE,row) def get_api(self,row): return self.__get_excel_data(API,row) def get_url(self,row): path = self.__get_excel_data(URL,row) if path: return self.ini.get_host(HOST_KEY) + path def get_method(self,row): return self.__get_excel_data(REQ_METHOD,row) def get_mime(self,row): mime = self.__get_excel_data(MIME,row) if mime: return mime.lower() def get_case_data(self,row): case_key = self.__get_excel_data(CASE_DATA, row) if case_key: module_name = self.get_module(row) api_name = self.get_api(row) return self.case_dict[module_name][api_name][case_key] def get_expect_data(self,row): expect_key = self.__get_excel_data(EXPECT_DATA, row) if expect_key: module_name = self.get_module(row) api_name = self.get_api(row) return self.expect_dict[module_name][api_name][expect_key] def get_sql_data(self,row): sql_key = self.__get_excel_data(SQL_DATA, row) if sql_key: module_name = self.get_module(row) api_name = self.get_api(row) return self.sql_dict[module_name][api_name][sql_key] def get_sql_type(self,row): value = self.__get_excel_data(SQL_TYPE,row) if value: return value def get_updata(self,row): updata_key = self.__get_excel_data(UPDATE_KEY,row) if updata_key: return updata_key def case_title(self, row): """根据行号,获取用例的标题""" return self.__get_excel_data(TITLE, row) def case_level(self, row): """根号行号,获取用例的等级""" return self.__get_excel_data(LEVEL, row) def get_data(self): list_data = [] for i in range(2,self.ws.max_row+1): module = self.get_module(i) api = self.get_api(i) url = self.get_url(i) method = self.get_method(i) mime = self.get_mime(i) case_data = self.get_case_data(i) expect_data = self.get_expect_data(i) sql_typ = self.get_sql_type(i) sql_data = self.get_sql_data(i) updata_key = self.get_updata(i) case_title = self.case_title(i) case_level = self.case_level(i) if url is not None and method is not None and expect_data is not None: list_data.append([module,api,url,method,mime,case_data,expect_data,sql_typ,sql_data,updata_key,case_title,case_level]) return list_data if __name__ == '__main__': excel = Read_excel('zys') print(excel.get_data())