|  | #!/usr/bin/env python | 
|  |  | 
|  | r""" | 
|  | This module provides robot keyword execution functions such as run_key.. | 
|  | """ | 
|  |  | 
|  | import gen_print as gp | 
|  | from robot.libraries.BuiltIn import BuiltIn | 
|  |  | 
|  |  | 
|  | def run_key(keyword_buf, | 
|  | quiet=None, | 
|  | test_mode=None, | 
|  | ignore=0): | 
|  | r""" | 
|  | Run the given keyword, return the status and the keyword return values. | 
|  |  | 
|  | The advantage of using this function verses having robot simply run your | 
|  | keyword is the handling of parameters like quiet, test_mode and ignore. | 
|  |  | 
|  | Description of arguments: | 
|  | keyword_buf                     The keyword string to be run. | 
|  | quiet                           Indicates whether this function should run | 
|  | the pissuing function to print 'Issuing: | 
|  | <keyword string>' to stdout. | 
|  | test_mode                       If test_mode is set, this function will | 
|  | not actually run the command.  If quiet is | 
|  | 0, it will print a message indicating what | 
|  | it would have run (e.g. "Issuing: | 
|  | (test_mode) your command"). | 
|  | ignore                          Ignore errors from running keyword.  If | 
|  | this is 0, this function will fail with | 
|  | whatever error occurred when running the | 
|  | keyword. | 
|  |  | 
|  | Example usage from a robot script: | 
|  |  | 
|  | ${status}  ${ret_values}=  Run Key  My Keyword \ Arg1 \ Arg2 | 
|  |  | 
|  | Note that to get robot to pass your command + args as a single string to | 
|  | this function, you must escape extra spaces with a backslash. | 
|  |  | 
|  | Also note that ret_values is a python list: | 
|  | ret_values: | 
|  | ret_values[0]:    value1 | 
|  | ret_values[1]:    value2 | 
|  | """ | 
|  |  | 
|  | # Set these vars to default values if they are None. | 
|  | quiet = int(gp.get_var_value(quiet, 0)) | 
|  | test_mode = int(gp.get_var_value(test_mode, 0)) | 
|  | ignore = int(ignore) | 
|  |  | 
|  | # Convert the keyword_buf into a list split wherever 2 or more spaces are | 
|  | # found. | 
|  | keyword_list = keyword_buf.split('  ') | 
|  | # Strip spaces from each argument to make the output look clean and | 
|  | # uniform. | 
|  | keyword_list = [item.strip(' ') for item in keyword_list] | 
|  |  | 
|  | if not quiet: | 
|  | # Join the list back into keyword_buf for the sake of output. | 
|  | keyword_buf = '  '.join(keyword_list) | 
|  | gp.pissuing(keyword_buf, test_mode) | 
|  |  | 
|  | if test_mode: | 
|  | return 'PASS', "" | 
|  |  | 
|  | try: | 
|  | status, ret_values = \ | 
|  | BuiltIn().run_keyword_and_ignore_error(*keyword_list) | 
|  | except Exception as my_assertion_error: | 
|  | status = "FAIL" | 
|  | ret_values = my_assertion_error.args[0] | 
|  |  | 
|  | if status != 'PASS': | 
|  | # Output the error message to stderr. | 
|  | BuiltIn().log_to_console(ret_values, stream='STDERR') | 
|  | if not ignore: | 
|  | # Fail with the given error message. | 
|  | BuiltIn().fail(ret_values) | 
|  |  | 
|  | return status, ret_values | 
|  |  | 
|  |  | 
|  | def run_key_u(keyword_buf, | 
|  | quiet=None, | 
|  | ignore=0): | 
|  | r""" | 
|  | Run keyword unconditionally (i.e. without regard to global test_mode | 
|  | setting). | 
|  |  | 
|  | This function will simply call the run_key function passing on all of the | 
|  | callers parameters except test_mode which will be hard-coded to 0.  See | 
|  | run_key (above) for details. | 
|  |  | 
|  | See the proglog of "run_key" function above for description of arguments. | 
|  | """ | 
|  |  | 
|  | return run_key(keyword_buf, test_mode=0, quiet=quiet, ignore=ignore) |