def get_mapping_variable(variable_name: Text, variables_mapping: VariablesMapping) -> Any: """ get variable from variables_mapping. Args: variable_name (str): variable name variables_mapping (dict): variables mapping Returns: mapping variable value. Raises: exceptions.VariableNotFound: variable is not found. """ # TODO: get variable from environ # get variable from config.json variables_mapping.update(parse_config_variable_mapping()) # get variable from cookies.json variables_mapping.update(parse_cookies_variables_mapping()) # get variable from init_data.json variables_mapping.update(parse_init_data_variable_mapping()) # get variable from debugtalk module # debugtalk_variables_mapping = parse_debugtalk_variables_mapping() # variables_mapping.update(debugtalk_variables_mapping) try: return variables_mapping[variable_name] except KeyError: raise exceptions.VariableNotFound( f"{variable_name} not found in {variables_mapping}" )
def merge_variables( variables: VariablesMapping, variables_to_be_overridden: VariablesMapping) -> VariablesMapping: """merge two variables mapping, the first variables have higher priority""" step_new_variables = {} for key, value in variables.items(): if f"${key}" == value or "${" + key + "}" == value: # e.g. {"base_url": "$base_url"} # or {"base_url": "${base_url}"} continue step_new_variables[key] = value merged_variables = copy.copy(variables_to_be_overridden) merged_variables.update(step_new_variables) return merged_variables
def override_config_variables( step_variables: VariablesMapping, config_variables: VariablesMapping) -> VariablesMapping: """ override variables: testcase step variables > testcase config variables testsuite testcase variables > testsuite config variables """ step_new_variables = {} for key, value in step_variables.items(): if f"${key}" == value: # e.g. {"base_url": "$base_url"} continue step_new_variables[key] = value variables = copy.deepcopy(config_variables) variables.update(step_new_variables) return variables