def start_suite(self, suite): variables = GLOBAL_VARIABLES.copy() variables.set_from_variable_table(suite.variables) result = TestSuite(source=suite.source, name=suite.name, doc=suite.doc, metadata=suite.metadata, starttime=get_timestamp()) if not self.result: result.set_criticality(self._settings.critical_tags, self._settings.non_critical_tags) self.result = Result(root_suite=result) self.result.configure(status_rc=self._settings.status_rc, stat_config=self._settings.statistics_config) else: self._suite.suites.append(result) ns = Namespace(result, variables, self._variables, suite.user_keywords, suite.imports) EXECUTION_CONTEXTS.start_suite(ns, self._output, self._settings.dry_run) self._context.set_suite_variables(result) if not (self._suite_status and self._suite_status.failures): ns.handle_imports() variables.resolve_delayed() result.doc = self._resolve_setting(result.doc) result.metadata = [(self._resolve_setting(n), self._resolve_setting(v)) for n, v in result.metadata.items()] self._context.set_suite_variables(result) self._suite = result self._suite_status = SuiteStatus(self._suite_status, self._settings.exit_on_failure, self._settings.skip_teardown_on_exit) self._output.start_suite(ModelCombiner(suite, self._suite)) self._run_setup(suite.keywords.setup, self._suite_status) self._executed_tests = NormalizedDict(ignore='_')
def test_omit_keywords_during_xml_parsing(self): class NonVisitingSuite(TestSuite): def visit(self, visitor): pass result = Result(root_suite=NonVisitingSuite()) builder = ExecutionResultBuilder(StringIO(GOLDEN_XML), include_keywords=False) builder.build(result) assert_equal(len(result.suite.tests[0].body), 0)
def _get_execution_result(self): suite = TestSuite(name=self.EXPECTED_SUITE_NAME) tc = suite.tests.create(name=self.EXPECTED_TEST_NAME, status='PASS') tc.body.create_keyword(kwname=self.EXPECTED_KEYWORD_NAME, status='PASS') tc = suite.tests.create(name=self.EXPECTED_FAILING_TEST) kw = tc.body.create_keyword(kwname=self.EXPECTED_KEYWORD_NAME) kw.body.create_message(message=self.EXPECTED_DEBUG_MESSAGE, level='DEBUG', timestamp='20201212 12:12:12.000') errors = ExecutionErrors() errors.messages.create(message=self.EXPECTED_ERROR_MESSAGE, level='ERROR', timestamp='20201212 12:12:12.000') return Result(root_suite=suite, errors=errors)
def start_suite(self, suite): if suite.name in self._executed[-1] and suite.parent.source: self._output.warn( f"Multiple suites with name '{suite.name}' executed in " f"suite '{suite.parent.longname}'.") self._executed[-1][suite.name] = True self._executed.append(NormalizedDict(ignore='_')) self._output.library_listeners.new_suite_scope() result = TestSuite(source=suite.source, name=suite.name, doc=suite.doc, metadata=suite.metadata, starttime=get_timestamp(), rpa=self._settings.rpa) if not self.result: self.result = Result(root_suite=result, rpa=self._settings.rpa) self.result.configure(status_rc=self._settings.status_rc, stat_config=self._settings.statistics_config) else: self._suite.suites.append(result) self._suite = result self._suite_status = SuiteStatus(self._suite_status, self._settings.exit_on_failure, self._settings.exit_on_error, self._settings.skip_teardown_on_exit) ns = Namespace(self._variables, result, suite.resource, self._settings.languages) ns.start_suite() ns.variables.set_from_variable_table(suite.resource.variables) EXECUTION_CONTEXTS.start_suite(result, ns, self._output, self._settings.dry_run) self._context.set_suite_variables(result) if not self._suite_status.failed: ns.handle_imports() ns.variables.resolve_delayed() result.doc = self._resolve_setting(result.doc) result.metadata = [(self._resolve_setting(n), self._resolve_setting(v)) for n, v in result.metadata.items()] self._context.set_suite_variables(result) self._output.start_suite( ModelCombiner(suite, result, tests=suite.tests, suites=suite.suites, test_count=suite.test_count)) self._output.register_error_listener(self._suite_status.error_occurred) self._run_setup(suite.setup, self._suite_status)
def process_output(self, path): set_suite_variable = BuiltIn().set_suite_variable if not path or path.upper() == 'NONE': set_suite_variable('$SUITE', None) print("Not processing output.") return path = path.replace('/', os.sep) try: print("Processing output '%s'." % path) result = Result(root_suite=NoSlotsTestSuite()) ExecutionResultBuilder(path).build(result) except: set_suite_variable('$SUITE', None) raise RuntimeError('Processing output failed: %s' % utils.get_error_message()) set_suite_variable('$SUITE', process_suite(result.suite)) set_suite_variable('$STATISTICS', result.statistics) set_suite_variable('$ERRORS', process_errors(result.errors))
def start_suite(self, suite): self._output.library_listeners.new_suite_scope() result = TestSuite(source=suite.source, name=suite.name, doc=suite.doc, metadata=suite.metadata, starttime=get_timestamp(), rpa=self._settings.rpa) if not self.result: result.set_criticality(self._settings.critical_tags, self._settings.non_critical_tags) self.result = Result(root_suite=result, rpa=self._settings.rpa) self.result.configure(status_rc=self._settings.status_rc, stat_config=self._settings.statistics_config) else: self._suite.suites.append(result) self._suite = result self._suite_status = SuiteStatus(self._suite_status, self._settings.exit_on_failure, self._settings.exit_on_error, self._settings.skip_teardown_on_exit) ns = Namespace(self._variables, result, suite.resource) ns.start_suite() ns.variables.set_from_variable_table(suite.resource.variables) EXECUTION_CONTEXTS.start_suite(result, ns, self._output, self._settings.dry_run) self._context.set_suite_variables(result) if not self._suite_status.failures: ns.handle_imports() ns.variables.resolve_delayed() result.doc = self._resolve_setting(result.doc) result.metadata = [(self._resolve_setting(n), self._resolve_setting(v)) for n, v in result.metadata.items()] self._context.set_suite_variables(result) self._output.start_suite( ModelCombiner(suite, result, tests=suite.tests, suites=suite.suites, test_count=suite.test_count)) self._output.register_error_listener(self._suite_status.error_occurred) self._run_setup(suite.keywords.setup, self._suite_status) self._executed_tests = NormalizedDict(ignore='_')
def process_output(self, path): set_suite_variable = BuiltIn().set_suite_variable if not path or path.upper() == 'NONE': set_suite_variable('$SUITE', None) logger.info("Not processing output.") return path = path.replace('/', os.sep) try: logger.info("Processing output '%s'." % path) result = Result(root_suite=NoSlotsTestSuite()) ExecutionResultBuilder(path).build(result) except: set_suite_variable('$SUITE', None) msg, details = utils.get_error_details() logger.info(details) raise RuntimeError('Processing output failed: %s' % msg) result.visit(ProcessResults()) set_suite_variable('$SUITE', result.suite) set_suite_variable('$STATISTICS', result.statistics) set_suite_variable('$ERRORS', result.errors)