def run_single_test_case(workspace, project, full_test_case_name): # check if test case exists if not utils.test_case_exists(workspace, project, full_test_case_name): sys.exit( "ERROR: no test case named {} exists".format(full_test_case_name)) else: # get test data data_sets = utils.get_test_data(workspace, project, full_test_case_name) execution_list = [] if data_sets: for data_set in data_sets: execution_list.append((full_test_case_name, data_set)) else: execution_list.append((full_test_case_name, {})) # run the single test, once for each data set multiprocess_executor(execution_list, 2)
def run(self, test_execution, args): test_execution.thread_amount = args.threads test_execution.cli_drivers = args.browsers test_execution.cli_environments = args.environments test_execution.timestamp = args.timestamp test_execution.interactive = args.interactive # test_execution.minimize = args.minimize root_path = test_execution.root_path if args.project and args.test_or_suite: if not args.project in utils.get_projects(root_path): msg = [ 'Error: the project {0} does not exist'.format( args.project), '', 'Usage:', self._parser.usage, '', 'Projects:' ] for proj in utils.get_projects(root_path): msg.append(' {}'.format(proj)) raise CommandException('\n'.join(msg)) else: test_execution.project = args.project test_execution.settings = settings_manager.get_project_settings( args.project, test_execution.settings) if utils.test_suite_exists(root_path, test_execution.project, args.test_or_suite): test_execution.suite = args.test_or_suite # execute test suite start_execution.run_test_or_suite( root_path, test_execution.project, suite=test_execution.suite) elif utils.test_case_exists(root_path, test_execution.project, args.test_or_suite): test_execution.test = args.test_or_suite # execute test case start_execution.run_test_or_suite(root_path, test_execution.project, test=test_execution.test) else: # test_or_suite does not match any existing suite or test msg = [('Error: the value {0} does not match an existing ' 'suite or test'.format(args.test_or_suite)), '', 'Usage:', self._parser.usage] raise CommandException('\n'.join(msg)) elif not args.project and not args.test_or_suite and test_execution.interactive: from golem.test_runner import interactive interactive.interactive(test_execution.settings, test_execution.cli_drivers) elif not args.project: msg = ['Usage:', self._parser.usage, '', 'Projects:'] for proj in utils.get_projects(root_path): msg.append(' {}'.format(proj)) raise CommandException('\n'.join(msg)) elif args.project and not args.test_or_suite: msg = ['Usage: {}'.format(self._parser.usage), '', 'Test Cases:'] print('\n'.join(msg)) test_cases = utils.get_test_cases(root_path, args.project) utils.display_tree_structure_command_line( test_cases['sub_elements']) print('\nTest Suites:') test_suites = utils.get_suites(root_path, args.project) for suite in test_suites['sub_elements']: print(' ' + suite['name']) raise CommandException() else: # test_or_suite does not match any existing suite or test raise CommandException( 'Error: the value {0} does not match an existing ' 'suite or test'.format(args.test_or_suite))
def run(self, test_execution, args): test_execution.thread_amount = args.threads test_execution.cli_drivers = args.browsers test_execution.cli_environments = args.environments test_execution.timestamp = args.timestamp test_execution.interactive = args.interactive root_path = test_execution.root_path if args.project and args.test_or_suite: if not args.project in utils.get_projects(root_path): msg = ['Error: the project {0} does not exist'.format(args.project), '', 'Usage:', self._parser.usage, '', 'Projects:'] for proj in utils.get_projects(root_path): msg.append(' {}'.format(proj)) raise CommandException('\n'.join(msg)) else: test_execution.project = args.project test_execution.settings = settings_manager.get_project_settings(root_path, args.project) if utils.test_suite_exists(root_path, test_execution.project, args.test_or_suite): test_execution.suite = args.test_or_suite # execute test suite start_execution.run_test_or_suite(root_path, test_execution.project, suite=test_execution.suite) elif utils.test_case_exists(root_path, test_execution.project, args.test_or_suite): test_execution.test = args.test_or_suite # execute test case start_execution.run_test_or_suite(root_path, test_execution.project, test=test_execution.test) else: # test_or_suite does not match any existing suite or test msg = [('Error: the value {0} does not match an existing ' 'suite or test'.format(args.test_or_suite)), '', 'Usage:', self._parser.usage] raise CommandException('\n'.join(msg)) elif not args.project and not args.test_or_suite and test_execution.interactive: from golem.test_runner import interactive interactive.interactive(test_execution.settings, test_execution.cli_drivers) elif not args.project: msg = ['Usage:', self._parser.usage, '', 'Projects:'] for proj in utils.get_projects(root_path): msg.append(' {}'.format(proj)) raise CommandException('\n'.join(msg)) elif args.project and not args.test_or_suite: msg = ['Usage: {}'.format(self._parser.usage), '', 'Test Cases:'] print('\n'.join(msg)) test_cases = utils.get_test_cases(root_path, args.project) utils.display_tree_structure_command_line(test_cases['sub_elements']) print('\nTest Suites:') test_suites = utils.get_suites(root_path, args.project) for suite in test_suites['sub_elements']: print(' ' + suite['name']) raise CommandException() else: # test_or_suite does not match any existing suite or test raise CommandException( 'Error: the value {0} does not match an existing ' 'suite or test'.format(args.test_or_suite))
def execute_from_command_line(root_path): parser = cli.get_golem_parser() args = parser.parse_args() # set test_execution values test_execution.root_path = root_path test_execution.settings = utils.get_global_settings() import golem.core golem.core.temp = test_execution.settings # main action == gui if args.main_action == 'gui': gui_start.run_gui() sys.exit() # main action == run if args.main_action == 'run': if not args.project: print 'Usage:', parser.usage, '\n\n', 'Project List:' for proj in utils.get_projects(root_path): print '> {}'.format(proj) sys.exit() # check if selected project does not exist elif not args.project in utils.get_projects(root_path): sys.exit('Error: the project {0} does not exist' .format(test_execution.project)) else: test_execution.project = args.project # check if test_or_suite value is present if not args.test_or_suite: print 'Usage:', parser.usage print '\nTest Cases:' test_cases = utils.get_test_cases(root_path, test_execution.project) utils.display_tree_structure_command_line(test_cases) print '\nTest Suites:' test_suites = utils.get_suites(root_path, test_execution.project) utils.display_tree_structure_command_line(test_suites) sys.exit() # check if test_or_suite value matches an existing test suite elif utils.test_suite_exists(root_path, test_execution.project, args.test_or_suite): test_execution.suite = args.test_or_suite # execute test suite test_runner.run_suite(root_path, test_execution.project, test_execution.suite) # check if test_or_suite value matches an existing test case elif utils.test_case_exists(root_path, test_execution.project, args.test_or_suite): test_execution.test = args.test_or_suite # execute test case test_runner.run_single_test_case(root_path, test_execution.project, test_execution.test) else: # test_or_suite does not match any existing suite or test sys.exit('Error: the value {0} does not match an existing ' 'suite or test' .format(args.test_or_suite)) # main action == startproject if args.main_action == 'startproject': sys.exit('To be defined') # main action == createuser if args.main_action == 'createuser': sys.exit('To be defined')