def get_testwrapper_file_details(testsuite_filepath, data_repository): """retuns testwrapperfile to use if specified, else returns False""" if data_repository.has_key('ow_testwrapperfile'): testwrapperfile = data_repository['ow_testwrapperfile'] else: if Utils.xml_Utils.nodeExists(testsuite_filepath, "TestWrapperFile"): testwrapperfile = Utils.xml_Utils.getChildTextbyParentTag\ (testsuite_filepath, 'Details', 'TestWrapperFile') else: return [False, False, False, 'abort'] abs_cur_dir = os.path.dirname(testsuite_filepath) abs_testwrapperfile = Utils.file_Utils.getAbsPath(testwrapperfile, abs_cur_dir) Utils.xml_Utils.getRoot(abs_testwrapperfile) jfile_obj = execution_files_class.ExecFilesClass(abs_testwrapperfile, "ts", None, None) if not data_repository.get('suite_data_file', False): print_error( "Input data file must be specified in test suite global details section" ) exit(0) j_data_type = jfile_obj.check_get_datatype( data_repository['suite_data_file']) j_runtype = jfile_obj.check_get_runtype() setup_on_error_action = Utils.testcase_Utils.get_setup_on_error( abs_testwrapperfile) return [abs_testwrapperfile, j_data_type, j_runtype, setup_on_error_action]
def get_suite_details(testsuite_filepath, data_repository, from_project, res_startdir, logs_startdir): """Gets all the details of the Testsuite from its xml file Details that are currently obtained are: 1. Name, 2. default_onError action, 3. default_onError value Arguments: filepath = full path of the Testsuite xml file """ suite_repository = {} suite_name = Utils.xml_Utils.getChildTextbyParentTag(testsuite_filepath, 'Details', 'Name') suite_title = Utils.xml_Utils.getChildTextbyParentTag(testsuite_filepath, 'Details', 'Title') suite_exectype = testsuite_utils.get_exectype_from_xmlfile(testsuite_filepath) def_on_error_action = Utils.testcase_Utils.get_defonerror_fromxml_file(testsuite_filepath) def_on_error_value = Utils.xml_Utils.getChildAttributebyParentTag(testsuite_filepath, 'Details', 'default_onError', 'value') filename = os.path.basename(testsuite_filepath) nameonly = Utils.file_Utils.getNameOnly(filename) operating_system = sys.platform if suite_name is None or suite_name is False: suite_name = nameonly else: suite_name = suite_name.strip() if suite_name != nameonly: print_warning("<Name> tag in xml file should match the filename") suite_name = nameonly if suite_title is None or suite_title is False: print_warning("title is missing, please provide a title for the testsuite") suite_title = "None" else: suite_title = str(suite_title).strip() if def_on_error_value is None or def_on_error_value is False: def_on_error_value = None if data_repository.has_key('ow_resultdir') and not from_project: res_startdir = data_repository['ow_resultdir'] if data_repository.has_key('ow_logdir') and not from_project: logs_startdir = data_repository['ow_logdir'] efile_obj = execution_files_class.ExecFilesClass(testsuite_filepath, "ts", res_startdir, logs_startdir) data_file = efile_obj.get_data_files()[0] suite_resultfile = efile_obj.resultfile suite_execution_dir = os.path.dirname(suite_resultfile) junit_resultfile = Utils.file_Utils.getNameOnly(suite_resultfile) + "_tsjunit.xml" ws_results_execdir = efile_obj.results_execdir ws_logs_execdir = efile_obj.logs_execdir Utils.config_Utils.junit_file(junit_resultfile) suite_repository['suite_name'] = suite_name suite_repository['testsuite_filepath'] = testsuite_filepath suite_repository['operating_system'] = operating_system suite_repository['suite_title'] = suite_title suite_repository['suite_exectype'] = suite_exectype suite_repository['def_on_error_action'] = def_on_error_action suite_repository['def_on_error_value'] = def_on_error_value suite_repository['suite_execution_dir'] = suite_execution_dir suite_repository['suite_resultfile'] = suite_resultfile suite_repository['junit_resultfile'] = junit_resultfile suite_repository['ws_results_execdir'] = ws_results_execdir suite_repository['ws_logs_execdir'] = ws_logs_execdir if data_file is not False: suite_repository['data_file'] = data_file # copying testsuite xml file to execution directory of this testsuite shutil.copy2(testsuite_filepath, suite_execution_dir) return suite_repository
def get_project_details(project_filepath, res_startdir, logs_startdir, data_repository): """Gets all details of the Project from its xml file""" project_repository = {} project_name = Utils.xml_Utils.getChildTextbyParentTag( project_filepath, 'Details', 'Name') project_title = Utils.xml_Utils.getChildTextbyParentTag( project_filepath, 'Details', 'Title') def_on_error_action = Utils.testcase_Utils.get_defonerror_fromxml_file( project_filepath) def_on_error_value = Utils.xml_Utils.getChildAttributebyParentTag( project_filepath, 'Details', 'default_onError', 'value') filename = os.path.basename(project_filepath) nameonly = Utils.file_Utils.getNameOnly(filename) operating_system = sys.platform if project_name is None or project_name is False: project_name = nameonly else: project_name = project_name.strip() if project_name != nameonly: print_warning("<Name> tag in xml file should match the filename") project_name = nameonly if project_title is None or project_title is False: print_warning( "title is missing, please provide a title for the project") else: project_title = str(project_title).strip() if def_on_error_value is None or def_on_error_value is False: def_on_error_value = None if data_repository.has_key('ow_resultdir'): res_startdir = data_repository['ow_resultdir'] if data_repository.has_key('ow_logdir'): logs_startdir = data_repository['ow_logdir'] efile_obj = execution_files_class.ExecFilesClass(project_filepath, "proj", res_startdir, logs_startdir) project_resultfile = efile_obj.resultfile project_junit = Utils.file_Utils.getNameOnly( project_resultfile) + "_prjunit.xml" project_execution_dir = os.path.dirname(project_resultfile) wp_results_execdir = efile_obj.results_execdir wp_logs_execdir = efile_obj.logs_execdir # project_resultfile = open(project_resultfile, 'a+') # Utils.config_Utils.junit_file(project_resultfile) project_repository['title'] = project_title project_repository['operating_system'] = operating_system project_repository['project_name'] = project_name project_repository['def_on_error_action'] = def_on_error_action project_repository['def_on_error_value'] = def_on_error_value project_repository['project_execution_dir'] = project_execution_dir project_repository['project_resultfile'] = project_junit project_repository['wp_results_execdir'] = wp_results_execdir project_repository['wp_logs_execdir'] = wp_logs_execdir # copying testsuite xml file to execution directory of this testsuite shutil.copy2(project_filepath, project_execution_dir) return project_repository
def get_testcase_details(testcase_filepath, data_repository, jiraproj): """Gets all the details of the Testcase (like title, resultsfolder, logsfolder, datafile, default on_error action/value etc) from its xml file,for details that are not provided by user assigns default values. """ name = Utils.xml_Utils.getChildTextbyParentTag(testcase_filepath, 'Details', 'Name') title = Utils.xml_Utils.getChildTextbyParentTag(testcase_filepath, 'Details', 'Title') category = Utils.xml_Utils.getChildTextbyParentTag(testcase_filepath, 'Details', 'Category') def_on_error_action = Utils.testcase_Utils.get_defonerror_fromxml_file( testcase_filepath) def_on_error_value = Utils.xml_Utils.getChildAttributebyParentTag( testcase_filepath, 'Details', 'default_onError', 'value') filename = os.path.basename(testcase_filepath) filedir = os.path.dirname(testcase_filepath) nameonly = Utils.file_Utils.getNameOnly(filename) operating_system = sys.platform if name is None or name is False: name = nameonly else: name = name.strip() if name != nameonly: print_warning("<Name> tag in xml file should match the filename") name = nameonly if title is None or title is False: print_warning( "title is missing, please provide a title for the testcase") title = "None" else: title = str(title).strip() if def_on_error_value is None or def_on_error_value is False: def_on_error_value = None if not data_repository.has_key('wt_results_execdir'): if data_repository.has_key('ow_resultdir'): data_repository['wt_results_execdir'] = data_repository[ 'ow_resultdir'] else: data_repository['wt_results_execdir'] = None if not data_repository.has_key('wt_logs_execdir'): if data_repository.has_key('ow_logdir'): data_repository['wt_logs_execdir'] = data_repository['ow_logdir'] else: data_repository['wt_logs_execdir'] = None res_startdir = data_repository['wt_results_execdir'] logs_startdir = data_repository['wt_logs_execdir'] efile_obj = execution_files_class.ExecFilesClass(testcase_filepath, "tc", res_startdir, logs_startdir) resultfile = efile_obj.resultfile resultsdir = efile_obj.resultsdir logfile = efile_obj.logfile logsdir = efile_obj.logsdir defectsdir = efile_obj.get_defect_files() """Data files can be passed on to a test by four methods, below are the four methods and its priority in order. By this feature we allow the user to run the same testcases, with different data files with out actually changing the testcase. """ ##First priority for data files given through CLI## if data_repository.has_key('ow_datafile'): datafile = data_repository['ow_datafile'] data_type = efile_obj.check_get_datatype(datafile) ##Second priority for data files given in the Test suite step## elif data_repository.has_key(testcase_filepath): datafile = data_repository[testcase_filepath] data_type = efile_obj.check_get_datatype(datafile) ##Third priority for data files given in the Test Suite globally## elif data_repository.has_key('suite_data_file'): datafile = data_repository['suite_data_file'] data_type = efile_obj.check_get_datatype(datafile) ##Fourth priority for data files given in the Testcase file## else: datafile, data_type = efile_obj.get_data_files() # tc_execution_dir = Utils.file_Utils.createDir_addtimestamp(execution_dir, nameonly) # datafile, data_type = get_testcase_datafile(testcase_filepath) # resultfile, resultsdir = get_testcase_resultfile(testcase_filepath, tc_execution_dir, nameonly) # logfile, logsdir = get_testcase_logfile(testcase_filepath, tc_execution_dir, nameonly) # defectsdir = get_testcase_defectsdir(testcase_filepath, tc_execution_dir, nameonly) kw_results_dir = Utils.file_Utils.createDir(resultsdir, 'Keyword_Results') console_logfile = Utils.file_Utils.getCustomLogFile( filename, logsdir, 'consoleLogs') Utils.config_Utils.debug_file(console_logfile) #objLogFile = Utils.testcase_Utils.pOpen(logfile) to_strip_list = [ name, title, category, datafile, data_type, logsdir, resultsdir, defectsdir ] stripped_list = Utils.string_Utils.strip_white_spaces(to_strip_list) name = stripped_list[0] title = stripped_list[1] category = stripped_list[2] datafile = stripped_list[3] data_type = stripped_list[4] logsdir = stripped_list[5] resultsdir = stripped_list[6] defectsdir = stripped_list[7] # Add variables to data_repository data_repository['wt_name'] = name data_repository['wt_testcase_filepath'] = testcase_filepath data_repository['wt_title'] = title data_repository['wt_filename'] = filename data_repository['wt_filedir'] = filedir data_repository['wt_datafile'] = datafile data_repository['wt_data_type'] = data_type.upper() data_repository['wt_resultsdir'] = resultsdir data_repository['wt_resultfile'] = resultfile data_repository['wt_logsdir'] = logsdir data_repository['wt_kw_results_dir'] = kw_results_dir data_repository['wt_defectsdir'] = defectsdir #data_repository['wt_logfile'] = objLogFile data_repository['wt_operating_system'] = operating_system.upper() data_repository['wt_def_on_error_action'] = def_on_error_action.upper() data_repository['wt_def_on_error_value'] = def_on_error_value # For custom jira project name if not data_repository.has_key('jiraproj'): data_repository['jiraproj'] = jiraproj # write resultfile, logsdir, datafile, filename, logfile to config file Utils.config_Utils.set_resultfile(resultfile) Utils.config_Utils.set_datafile(datafile) Utils.config_Utils.set_logsdir(logsdir) Utils.config_Utils.set_filename(filename) Utils.config_Utils.set_logfile(logfile) Utils.config_Utils.set_testcase_path(filedir) # write TC details to result file Utils.testcase_Utils.pTestcase() Utils.testcase_Utils.pCustomTag("Title", title) Utils.testcase_Utils.pCustomTag("TC_Location", testcase_filepath) Utils.testcase_Utils.pCustomTag("Datafile", datafile) Utils.testcase_Utils.pCustomTag("Logsdir", logsdir) Utils.testcase_Utils.pCustomTag("Defectsdir", defectsdir) Utils.testcase_Utils.pCustomTag("Resultfile", resultfile) Utils.testcase_Utils.pCustomTag("Operating_System", operating_system) # copying testcase xml file to execution directory of this testcase exec_dir = os.path.dirname(data_repository['wt_resultsdir']) shutil.copy2(testcase_filepath, exec_dir) return data_repository
def get_suite_details(testsuite_filepath, data_repository, from_project, res_startdir, logs_startdir): """Gets all the details of the Testsuite from its xml file Details that are currently obtained are: 1. Name, 2. default_onError action, 3. default_onError value Arguments: filepath = full path of the Testsuite xml file """ suite_repository = {} suite_name = Utils.xml_Utils.getChildTextbyParentTag( testsuite_filepath, 'Details', 'Name') suite_title = Utils.xml_Utils.getChildTextbyParentTag( testsuite_filepath, 'Details', 'Title') suite_exectype = testsuite_utils.get_exectype_from_xmlfile( testsuite_filepath) suite_random_exec = Utils.xml_Utils.getChildTextbyParentTag( testsuite_filepath, 'Details', 'random_tc_Execution') def_on_error_action = Utils.testcase_Utils.get_defonerror_fromxml_file( testsuite_filepath) def_on_error_value = Utils.xml_Utils.getChildAttributebyParentTag( testsuite_filepath, 'Details', 'default_onError', 'value') if suite_random_exec: if suite_random_exec.lower() == "true": suite_random_exec = True else: suite_random_exec = False filename = os.path.basename(testsuite_filepath) nameonly = Utils.file_Utils.getNameOnly(filename) operating_system = sys.platform if suite_name is None or suite_name is False: suite_name = nameonly else: suite_name = suite_name.strip() if suite_name != nameonly: print_warning("<Name> tag in xml file should match the filename") suite_name = nameonly if suite_title is None or suite_title is False: print_warning( "title is missing, please provide a title for the testsuite") suite_title = "None" else: suite_title = str(suite_title).strip() if def_on_error_value is None or def_on_error_value is False: def_on_error_value = None if 'ow_resultdir' in data_repository and not from_project: res_startdir = data_repository['ow_resultdir'] if 'ow_logdir' in data_repository and not from_project: logs_startdir = data_repository['ow_logdir'] efile_obj = execution_files_class.ExecFilesClass(testsuite_filepath, "ts", res_startdir, logs_startdir) # First priority is given for data files specified via CLI # Default datafiles: Given in the test suite globally. # If no datafiles are specified at CLI or global level, error is thrown. # At Suite level execution, step-wise datafiles are not considered. if data_repository.has_key('ow_datafile'): data_file = data_repository['ow_datafile'] else: data_file = efile_obj.get_data_files()[0] suite_resultfile = efile_obj.resultfile suite_execution_dir = os.path.dirname(suite_resultfile) junit_resultfile = (Utils.file_Utils.getNameOnly(suite_resultfile) + "_tsjunit.xml") ws_results_execdir = efile_obj.results_execdir ws_logs_execdir = efile_obj.logs_execdir Utils.config_Utils.junit_file(junit_resultfile) suite_repository['suite_name'] = suite_name suite_repository['testsuite_filepath'] = testsuite_filepath suite_repository['operating_system'] = operating_system suite_repository['suite_title'] = suite_title suite_repository['suite_exectype'] = suite_exectype suite_repository['def_on_error_action'] = def_on_error_action suite_repository['def_on_error_value'] = def_on_error_value suite_repository['suite_execution_dir'] = suite_execution_dir suite_repository['suite_resultfile'] = suite_resultfile suite_repository['junit_resultfile'] = junit_resultfile suite_repository['ws_results_execdir'] = ws_results_execdir suite_repository['ws_logs_execdir'] = ws_logs_execdir suite_repository['suite_random_exec'] = suite_random_exec if data_file is not False: suite_repository['data_file'] = data_file # copying testsuite xml file to execution directory of this testsuite shutil.copy2(testsuite_filepath, suite_execution_dir) return suite_repository