def __tests_from_requests(self): filename = self.engine.create_artifact("test_requests", ".py") test_mode = self.execution.get("test-mode", "apiritif") scenario = self.get_scenario() if test_mode == "apiritif": builder = ApiritifScriptGenerator(self.engine, scenario, self.label, self.log, test_mode=test_mode) builder.verbose = self.__is_verbose() else: wdlog = self.engine.create_artifact('webdriver', '.log') generate_markers = self.settings.get('generate-flow-markers', None) generate_markers = scenario.get('generate-flow-markers', generate_markers) scenario_caps = scenario.get("capabilities") # todo: just for legacy support, remove it later if isinstance(scenario_caps, list): self.log.warning( "Obsolete format of capabilities found (list), should be dict" ) scenario["capabilities"] = { item.keys()[0]: item.values()[0] for item in scenario_caps } configs = (self.settings, scenario, self.execution) capabilities = get_assembled_value(configs, "capabilities") remote = get_assembled_value(configs, "remote") builder = ApiritifScriptGenerator( self.engine, scenario, self.label, self.log, wdlog, utils_file=os.path.join(RESOURCES_DIR, "selenium_taurus_extras.py"), ignore_unknown_actions=self.settings.get( "ignore-unknown-actions", False), generate_markers=generate_markers, capabilities=capabilities, wd_addr=remote, test_mode=test_mode) builder.build_source_code() builder.save(filename) if isinstance(self.engine.aggregator, ConsolidatingAggregator) and isinstance( builder, ApiritifScriptGenerator): self.engine.aggregator.ignored_labels.extend( builder.service_methods) return filename
def __write_props_file(self): def write_prop(name, val): if val: if isinstance(val, list): val = ",".join(val) fds.write("{name}={val}\n".format(name=name, val=val)) props = get_assembled_value(configs=[self.settings, self.get_scenario(), self.execution], key="properties") props = props or BetterDict() junit_version = str(self.settings.get("junit-version", "4")) if junit_version == "5": props.merge({"junit_version": 5}) with open(self.props_file, 'wt') as fds: for key in sorted(props.keys()): write_prop(key, props[key]) fds.write("report_file=%s\n" % self.report_file) load = self.get_load() write_prop("iterations", load.iterations) write_prop("hold_for", load.hold) write_prop("concurrency", load.concurrency) write_prop("ramp_up", load.ramp_up) write_prop("steps", load.steps) write_prop("run_items", self._get_items_list("run-items")) write_prop("include_category", self._get_items_list("include-categories")) write_prop("exclude_category", self._get_items_list("exclude-categories"))
def __tests_from_requests(self): filename = self.engine.create_artifact("test_requests", ".py") test_mode = self.execution.get("test-mode", "apiritif") scenario = self.get_scenario() if test_mode == "apiritif": builder = ApiritifScriptGenerator(scenario, self.label, executor=self, test_mode=test_mode) builder.verbose = self.__is_verbose() else: wdlog = self.engine.create_artifact('webdriver', '.log') generate_markers = self.settings.get('generate-flow-markers', None) generate_markers = scenario.get('generate-flow-markers', generate_markers) scenario_caps = scenario.get("capabilities") # todo: just for legacy support, remove it later if isinstance(scenario_caps, list): self.log.warning("Obsolete format of capabilities found (list), should be dict") scenario["capabilities"] = {item.keys()[0]: item.values()[0] for item in scenario_caps} if scenario.get("external-logging", False): self.log.warning("'external-logging' is deprecated and unsupported now. Use 'plugins-path' instead.") configs = (self.settings, scenario, self.execution) capabilities = get_assembled_value(configs, "capabilities") remote = get_assembled_value(configs, "remote") builder = ApiritifScriptGenerator( scenario, self.label, wdlog, executor=self, ignore_unknown_actions=self.settings.get("ignore-unknown-actions", False), generate_markers=generate_markers, capabilities=capabilities, wd_addr=remote, test_mode=test_mode, generate_external_handler=True if self.settings.get('plugins-path', False) else False) builder.build_source_code() builder.save(filename) if isinstance(self.engine.aggregator, ConsolidatingAggregator) and isinstance(builder, ApiritifScriptGenerator): self.engine.aggregator.ignored_labels.extend(builder.service_methods) return filename