def TestSuiteFactory(datasources, **options): settings = RobotSettings(options) if is_string(datasources): datasources = [datasources] suite = TestSuiteBuilder(process_curdir=False).build(*datasources) suite.configure(**settings.suite_config) return suite
def TestSuiteFactory(datasources, **options): settings = RobotSettings(options) if isinstance(datasources, basestring): datasources = [datasources] suite = TestSuiteBuilder().build(*datasources) suite.configure(**settings.suite_config) return suite
def main(self, datasources, **options): settings = RobotSettings(options) LOGGER.register_console_logger(**settings.console_output_config) LOGGER.info("Settings:\n%s" % unic(settings)) suite = TestSuiteBuilder(settings["SuiteNames"], settings["WarnOnSkipped"]).build(*datasources) suite.configure(**settings.suite_config) if settings.pre_run_modifiers: suite.visit(ModelModifier(settings.pre_run_modifiers, settings.run_empty_suite, LOGGER)) with pyloggingconf.robot_handler_enabled(settings.log_level): result = suite.run(settings) LOGGER.info("Tests execution ended. Statistics:\n%s" % result.suite.stat_message) if settings.log or settings.report or settings.xunit: writer = ResultWriter(settings.output if settings.log else result) writer.write_results(settings.get_rebot_settings()) return result.return_code
def main(self, datasources, **options): settings = RobotSettings(options) LOGGER.register_console_logger(**settings.console_logger_config) LOGGER.info('Settings:\n%s' % unicode(settings)) suite = TestSuiteBuilder(settings['SuiteNames'], settings['WarnOnSkipped'], settings['RunEmptySuite']).build(*datasources) suite.configure(**settings.suite_config) result = suite.run(settings) LOGGER.info("Tests execution ended. Statistics:\n%s" % result.suite.stat_message) if settings.log or settings.report or settings.xunit: writer = ResultWriter(settings.output if settings.log else result) writer.write_results(settings.get_rebot_settings()) return result.return_code
def main(self, datasources, **options): settings = RobotSettings(options) LOGGER.register_console_logger(**settings.console_output_config) LOGGER.info('Settings:\n%s' % unicode(settings)) suite = TestSuiteBuilder(settings['SuiteNames'], settings['WarnOnSkipped']).build(*datasources) suite.configure(**settings.suite_config) if settings.pre_run_modifiers: suite.visit(ModelModifier(settings.pre_run_modifiers, settings.run_empty_suite, LOGGER)) with pyloggingconf.robot_handler_enabled(settings.log_level): result = suite.run(settings) LOGGER.info("Tests execution ended. Statistics:\n%s" % result.suite.stat_message) if settings.log or settings.report or settings.xunit: writer = ResultWriter(settings.output if settings.log else result) writer.write_results(settings.get_rebot_settings()) return result.return_code
def main(self, data_sources, **options): settings = RobotSettings(options) LOGGER.register_console_logger(**settings.console_output_config) LOGGER.info("Settings:\n%s" % unic(settings)) suite = TestSuiteBuilder(settings['SuiteNames'], settings['WarnOnSkipped'], settings['Extension']).build(*data_sources) suite.configure(**settings.suite_config) self._support_python_path(options) self._split_tests(suite) # 递归,找到所有的tests, 写入self.long_names self._assert_data_source( data_sources) # 只取第一个DataSource, 写入self.data_source self._assert_test_count() # 如果没有要测试的, 直接退出, 返回码: 1 self.output_dir = settings['OutputDir'] self.clean_output_dir() # 删掉主要输出目录下所有东东, 类似rm -rf self.output_dir self.log_debug_info(options) p_num = (int(options['processes']) if 'processes' in options else 2 * cpu_count()) start_time, end_time = self.parallel_run(options, p_num) self.merge_report(start_time, end_time)
def _runTest(self, parsed, **options): settings = RobotSettings(options) LOGGER.register_console_logger(width=settings['MonitorWidth'], colors=settings['MonitorColors'], markers=settings['MonitorMarkers'], stdout=settings['StdOut'], stderr=settings['StdErr']) LOGGER.info('Settings:\n%s' % six.text_type(settings)) suite = TestSuiteBuilder( settings['SuiteNames'], settings['WarnOnSkipped'], settings['RunEmptySuite'])._build_suite(parsed) suite.configure(**settings.suite_config) result = suite.run(settings) LOGGER.info("Tests execution ended. Statistics:\n%s" % result.suite.statistics.message) rc = result.return_code if settings.log or settings.report or settings.xunit: writer = ResultWriter(settings.output if settings.log else result) writer.write_results(settings.get_rebot_settings()) return rc
class RobotFramework(Application): def __init__(self): self.logger1 = new_logger_for_thread() Application.__init__(self, USAGE, arg_limits=(1, ), env_options='ROBOT_OPTIONS', logger=self.logger1) self.settings = None self.suite = None def main(self, datasources, **options): self.settings = RobotSettings(options) self.logger1.register_console_logger( **self.settings.console_output_config) self.logger1.info('Settings:\n%s' % unic(self.settings)) self.suite = TestSuiteBuilder( self.settings['SuiteNames'], self.settings['WarnOnSkipped']).build(*datasources) self.suite.configure(**self.settings.suite_config) if self.settings.pre_run_modifiers: self.suite.visit( ModelModifier(self.settings.pre_run_modifiers, self.settings.run_empty_suite, self.logger1)) with pyloggingconf.robot_handler_enabled(self.settings.log_level): result = self.suite.run(self.settings) self.logger1.info("Tests execution ended. Statistics:\n%s" % result.suite.stat_message) if self.settings.log or self.settings.report or self.settings.xunit: writer = ResultWriter( self.settings.output if self.settings.log else result) writer.write_results(self.settings.get_rebot_settings()) return result.return_code def validate(self, options, arguments): return self._filter_options_without_value(options), arguments def _filter_options_without_value(self, options): return dict((name, value) for name, value in options.items() if value not in (None, []))
def _runTest(self, parsed, **options): settings = RobotSettings(options) output_config = getattr(settings, 'console_output_config', { 'width': getattr(settings, 'console_width', 78), 'colors': getattr(settings, 'console_colors', 'AUTO'), 'markers': getattr(settings, 'console_markers', 'AUTO'), 'stdout': settings['StdOut'], 'stderr': settings['StdErr'] }) LOGGER.register_console_logger(**output_config) LOGGER.info('Settings:\n%s' % six.text_type(settings)) suite = TestSuiteBuilder( settings['SuiteNames'], settings['WarnOnSkipped'])._build_suite(parsed) suite.configure(**settings.suite_config) result = suite.run(settings) LOGGER.info("Tests execution ended. Statistics:\n%s" % result.suite.statistics.message) rc = result.return_code if settings.log or settings.report or settings.xunit: writer = ResultWriter(settings.output if settings.log else result) writer.write_results(settings.get_rebot_settings()) return rc
def main(self, datasources, **options): for key, value in options.items(): if not value: options.pop(key) settings = RobotSettings(options) LOGGER.register_console_logger(**settings.console_output_config) LOGGER.info('Settings:\n%s' % unic(settings)) suite = TestSuiteBuilder(settings['SuiteNames'], settings['WarnOnSkipped'], settings['Extension']).build(*datasources) suite.configure(**settings.suite_config) data_sources = '"' + '" "'.join(datasources) + '"' logFolder = settings['OutputDir'] if options.has_key('processes'): p_num = int(options['processes']) else: p_num = 2 * cpu_count() #默认两倍cpu核数 longname = [] testnames = self._split_tests(suite, longname) #递归,找到所有的tests extra_options_cmd = self.unresolve_options(options) #运行前先清理环境,主要是把一些Output文件和图片文件清除 self.clear_env(logFolder) #生成并行运行命令并运行 self.parallel_run(testnames, logFolder, data_sources, extra_options_cmd, p_num) #合并报告 rebotCommand = 'rebot --outputdir "' + logFolder + '" --merge "' + logFolder + '/*_Output.xml"' print(rebotCommand) merge_proc = subprocess.Popen(rebotCommand, shell=True) merge_proc.communicate()
def _runTest(self, parsed, **options): settings = RobotSettings(options) output_config = getattr( settings, 'console_output_config', { 'width': getattr(settings, 'console_width', 78), 'colors': getattr(settings, 'console_colors', 'AUTO'), 'markers': getattr(settings, 'console_markers', 'AUTO'), 'stdout': settings['StdOut'], 'stderr': settings['StdErr'] }) LOGGER.register_console_logger(**output_config) LOGGER.info('Settings:\n%s' % six.text_type(settings)) suite = TestSuiteBuilder( settings['SuiteNames'], settings['WarnOnSkipped'])._build_suite(parsed) suite.configure(**settings.suite_config) result = suite.run(settings) LOGGER.info("Tests execution ended. Statistics:\n%s" % result.suite.statistics.message) rc = result.return_code if settings.log or settings.report or settings.xunit: writer = ResultWriter(settings.output if settings.log else result) writer.write_results(settings.get_rebot_settings()) return rc
def _run(suite_path, test_case, results_dir): suite = TestSuiteBuilder().build(suite_path) suite.configure(include_tests=test_case.decode('utf-8')) result = suite.run(output='{0}/{1}.xml'.format(results_dir, test_case).decode('utf-8')) return {'passed': result.statistics.suite.stat.passed, 'failed': result.statistics.suite.stat.failed}