前言:人生就像一杯茶,不会苦一辈子,但总会苦一阵子。
遇到的问题:单人操作时,元素信息和测试数据均存放在一个excel表格中。若遇到多人操作,很容易报错。
解决方案:将元素信息和测试数据表格按模块区分
一、单人操作:
1、元素信息存放形式如下:
2、测试数据信息存放形式如下:
二、多人操作
1、页面元素信息表
2、测试数据表样式
三、表格优化后的代码
1、excel_data_utils
import os import xlrd from common.config_utils import local_config current_path = os.path.dirname(__file__) excel_path = os.path.join( current_path,'..',local_config.element_info_path ) class ElementdataUtils: def __init__(self,module_name,page_name,element_path=excel_path): self.element_path = element_path self.excel_path = os.path.join(self.element_path,module_name,page_name+'.xlsx') self.workbook = xlrd.open_workbook(self.excel_path) self.sheet = self.workbook.sheet_by_index(0) self.row_count = self.sheet.nrows def get_element_info(self): element_infos = {} for i in range(1, self.row_count): element_info = {} element_info['element_name'] = self.sheet.cell_value(i, 1) element_info['locator_type'] = self.sheet.cell_value(i, 2) element_info['locator_value'] = self.sheet.cell_value(i, 3) timeout_value = self.sheet.cell_value(i, 4) element_info['timeout'] = timeout_value if isinstance(timeout_value,float) else local_config.time_out element_infos[self.sheet.cell_value(i, 0)] = element_info return element_infos if __name__=="__main__": # s = ElementdataUtils('login_page') elements = ElementdataUtils('main','main_page').get_element_info() # print(elements) for e in elements.values(): print( e )
2、test_data_utils
import os from common.excel_utils import ExcelUtils from common.config_utils import local_config current_path = os.path.abspath(os.path.dirname(__file__)) test_data_path = os.path.join( current_path , '..' , local_config.testdata_path ) class TestDataUtils: def __init__(self,test_suite_name,test_file_name,test_class_name=None,test_data_path=test_data_path): test_data_path = os.path.join( test_data_path,test_suite_name,test_file_name+'.xlsx' ) self.excel_data = ExcelUtils( test_data_path , test_class_name ).get_sheet_data_by_list() self.excel_rows = len(self.excel_data) def convert_exceldata_to_testdata(self): # {'test_login_success': # {'test_name':'验证是否能成功进行登录','isnot':'是','excepted_result':'测试人员1','test_parameter':{'username':'test01','password':'newdream123'} } # 'test_login_fail': # { } # } test_data_infos = {} for i in range(1,self.excel_rows): # 1,2 test_data_info = {} test_data_info[ 'test_name' ] = self.excel_data[i][1] test_data_info[ 'isnot' ] = False if self.excel_data[i][2].__eq__('是') else True test_data_info[ 'excepted_result' ] = self.excel_data[i][3] test_parameter = {} for j in range( 4, len(self.excel_data[i]) ): if self.excel_data[i][j].__contains__('=') and len( self.excel_data[i][j] ) > 2 : parameter_info = self.excel_data[i][j].split('=') test_parameter[ parameter_info[0] ] = parameter_info[1] test_data_info[ 'test_parameter' ] = test_parameter test_data_infos[ self.excel_data[i][0] ] = test_data_info return test_data_infos if __name__ == '__main__': infos = TestDataUtils('login_suite','login_test').convert_exceldata_to_testdata() for i in infos.values(): print( i )