def test_robot_and_rebot_settings_are_independent_2(self): # https://github.com/robotframework/robotframework/pull/2438 rebot = RebotSettings() assert_equal(rebot['TestNames'], []) robot = RobotSettings() robot['TestNames'].extend(['test1', 'test2']) assert_equal(rebot['TestNames'], [])
def test_output_files_as_none_object(self): for name in 'Output', 'Report', 'Log', 'XUnit', 'DebugFile': attr = (name[:-4] if name.endswith('File') else name).lower() settings = RobotSettings({name.lower(): None}) assert_equals(settings[name], None) if hasattr(settings, attr): assert_equals(getattr(settings, attr), None)
def _verify_log_level(self, input, level=None, default=None): level = level or input default = default or level self._verify_log_levels(RobotSettings({'loglevel': input}), level, default) self._verify_log_levels(RebotSettings({'loglevel': input}), level, default)
def test_pythonpath(self): curdir = normpath(dirname(abspath(__file__))) for inp, exp in [ ('foo', [abspath('foo')]), (['a:b:c', 'zap'], [abspath(p) for p in ('a', 'b', 'c', 'zap')]), (['foo;bar', 'zap'], [abspath(p) for p in ('foo', 'bar', 'zap')]), (join(curdir, 't*_set*.??'), [join(curdir, 'test_settings.py')]) ]: assert_equal(RobotSettings(pythonpath=inp).pythonpath, exp) if WINDOWS: assert_equal( RobotSettings(pythonpath=r'c:\temp:d:\e\f:g').pythonpath, [r'c:\temp', r'd:\e\f', abspath('g')]) assert_equal( RobotSettings(pythonpath=r'c:\temp;d:\e\f;g').pythonpath, [r'c:\temp', r'd:\e\f', abspath('g')])
def _send_pid(self): self._send_socket("start agent", "") self._send_socket("pid", os.getpid()) variables = {} try: try: from robot.variables import GLOBAL_VARIABLES variables = GLOBAL_VARIABLES except ImportError: # for robot >2.9 from robot.conf.settings import RobotSettings from robot.variables.scopes import GlobalVariables variables = GlobalVariables(RobotSettings()).as_dict() data = {} for k in variables.keys(): if not (k.startswith('${') or k.startswith('@{')): key = '${' + k + '}' else: key = k data[key] = str(variables[k]) self._send_socket('global_vars', 'global_vars', data) except Exception as e: self.print_error_message( 'Global variables sending error: ' + str(e) + ' Global variables: ' + str(variables)) pass
def test_output_files_as_pathlib_objects(self): for name in 'Output.xml', 'Report.html', 'Log.html', 'XUnit.xml', 'DebugFile.txt': name, ext = name.split('.') expected = abspath(f'test.{ext}') attr = (name[:-4] if name.endswith('File') else name).lower() settings = RobotSettings({name.lower(): Path('test')}) assert_equal(settings[name], expected) if hasattr(settings, attr): assert_equal(getattr(settings, attr), expected)
def main(self, datasources, **options): # copied from robot.run.RobotFramework.main settings = RobotSettings(options) suite = TestSuiteBuilder( settings['SuiteNames'], settings['WarnOnSkipped']).build(*datasources) suite.configure(**settings.suite_config) return suite
def test_get_rebot_settings_excludes_settings_handled_already_in_execution( self): settings = RobotSettings(name='N', doc=':doc:', metadata='m:d', settag='s', include='i', exclude='e', test='t', suite='s', output='out.xml', loglevel='DEBUG:INFO', timestampoutputs=True).get_rebot_settings() for name in 'Name', 'Doc', 'Output': assert_equal(settings[name], None) for name in 'Metadata', 'SetTag', 'Include', 'Exclude', 'TestNames', 'SuiteNames': assert_equal(settings[name], []) assert_equal(settings['LogLevel'], 'TRACE') assert_equal(settings['TimestampOutputs'], False)
def _send_global_variables(self): variables = {} try: try: from robot.variables import GLOBAL_VARIABLES variables = GLOBAL_VARIABLES except ImportError: # for robot >2.9 from robot.conf.settings import RobotSettings from robot.variables.scopes import GlobalVariables variables = GlobalVariables(RobotSettings()).as_dict() data = {} for key in variables.keys(): new_key = '${' + key + '}' if not key.startswith( '${') and not key.startswith('@{') else key data[new_key] = str(variables[key]) self._send_to_server('global_vars', 'global_vars', data) except Exception as e: self._print_error_message('Global variables sending error: ' + str(e) + ' Global variables: ' + str(variables))
def test_robot_and_rebot_settings_are_independent(self): # https://github.com/robotframework/robotframework/issues/881 orig_opts = RobotSettings()._opts RebotSettings() assert_equals(RobotSettings()._opts, orig_opts)
def test_robot_settings_are_independent(self): settings1 = RobotSettings() assert_equal(settings1['Include'], []) settings2 = RobotSettings() settings2['Include'].append('tag') assert_equal(settings1['Include'], [])
def test_doc_from_file(self): for doc in __file__, Path(__file__): doc = RobotSettings({'doc': doc})['Doc'] assert_true('def test_doc_from_file(self):' in doc)
def test_output_dir_as_pathlib_object(self): assert_equal( RobotSettings({'outputdir': Path('.')})['OutputDir'], abspath('.'))
def test_get_rebot_settings_returns_only_rebot_settings(self): expected = RebotSettings() for opt in RobotSettings().get_rebot_settings()._opts: assert_true(opt in expected, opt)
def test_robot_and_rebot_settings_are_independent(self): # http://code.google.com/p/robotframework/issues/detail?id=881 orig_opts = RobotSettings()._opts RebotSettings() assert_equals(RobotSettings()._opts, orig_opts)
def test_extra_options(self): assert_equals(RobotSettings(name='My Name')['Name'], 'My Name') assert_equals( RobotSettings({'name': 'Override'}, name='Set')['Name'], 'Set')
def test_multi_options_as_single_string(self): assert_equals(RobotSettings({'test': 'one'})['TestNames'], ['one']) assert_equals(RebotSettings({'exclude': 'two'})['Exclude'], ['two'])
def test_rerun_failed_as_none_string_and_object(self): for name in 'ReRunFailed', 'ReRunFailedSuites': assert_equal(RobotSettings({name.lower(): 'NONE'})[name], None) assert_equal(RobotSettings({name.lower(): 'NoNe'})[name], None) assert_equal(RobotSettings({name.lower(): None})[name], None)
def test_default_log_level(self): self._verify_log_levels(RobotSettings(), 'INFO') self._verify_log_levels(RebotSettings(), 'TRACE')
def test_rerun_failed_as_pathlib_object(self): for name in 'ReRunFailed', 'ReRunFailedSuites': assert_equal( RobotSettings({name.lower(): Path('R.xml')})[name], 'R.xml')
def get_global_variables(): import robot import tempfile import os # Global variables copied from robot.variables.__init__.py global_variables = { '${TEMPDIR}': os.path.normpath(tempfile.gettempdir()), '${EXECDIR}': '', '${/}': os.sep, '${:}': os.pathsep, '${SPACE}': ' ', '${EMPTY}': '', '@{EMPTY}': [], '${True}': True, '${False}': False, '${None}': None, '${null}': None, '${OUTPUT_DIR}': '', '${OUTPUT_FILE}': '', '${SUMMARY_FILE}': '', '${REPORT_FILE}': '', '${LOG_FILE}': '', '${DEBUG_FILE}': '', '${PREV_TEST_NAME}': '', '${PREV_TEST_STATUS}': '', '${PREV_TEST_MESSAGE}': '', '${CURDIR}': '.', '${TEST_NAME}': '', '${TEST_DOCUMENTATION}': '', '@{TEST_TAGS}': [], '${TEST_STATUS}': '', '${TEST_MESSAGE}': '', '${SUITE_NAME}': '', '${SUITE_SOURCE}': '', '${SUITE_STATUS}': '', '${SUITE_MESSAGE}': '', '${SUITE_DOCUMENTATION}': '', '${KEYWORD_MESSAGE}': '', '${KEYWORD_STATUS}': '' } glob_variables = {} try: from robot.variables import GLOBAL_VARIABLES glob_variables = GLOBAL_VARIABLES except ImportError: # for robot >2.9 global_variables['&{EMPTY}'] = {} global_variables['&{SUITE_METADATA}'] = {} from robot.conf.settings import RobotSettings from robot.variables.scopes import GlobalVariables glob_variables = GlobalVariables(RobotSettings()).as_dict() glob_variables['${OUTPUT_DIR}'] = '' glob_variables['${EXECDIR}'] = '' glob_variables['${OUTPUT_FILE}'] = '' glob_variables['${REPORT_FILE}'] = '' glob_variables['${LOG_FILE}'] = '' data = { _wrap_variable_if_needed(key): value for key, value in glob_variables.items() } for k in global_variables: if not k in data: data[k] = global_variables[k] return data
def test_doc(self): assert_equal(RobotSettings()['Doc'], None) assert_equal(RobotSettings({'doc': None})['Doc'], None) assert_equal(RobotSettings({'doc': 'The doc!'})['Doc'], 'The doc!')