Пример #1
0
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}"
        )
Пример #2
0
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
Пример #3
0
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