コード例 #1
0
    def test_parse_content_with_variables(self):
        content = "${var}"
        variables_binds = {"var": "abc"}
        result = utils.parse_content_with_variables(content, variables_binds)
        self.assertEqual(result, "abc")

        content = "123${var}456"
        variables_binds = {"var": "abc"}
        result = utils.parse_content_with_variables(content, variables_binds)
        self.assertEqual(result, "123abc456")

        content = "${var1}"
        variables_binds = {"var2": "abc"}
        with self.assertRaises(exception.ParamsError):
            utils.parse_content_with_variables(content, variables_binds)
コード例 #2
0
ファイル: context.py プロジェクト: swissfiscal/ApiTestEngine
    def get_eval_value(self, data):
        """ evaluate data recursively, each variable in data will be evaluated.
            variables marker: ${variable}.
        """
        if isinstance(data, str):
            return utils.parse_content_with_variables(data, self.variables)

        if isinstance(data, list):
            return [self.get_eval_value(item) for item in data]

        if isinstance(data, dict):
            if "func" in data:
                # this is a function, e.g. {"func": "gen_random_string", "args": [5]}
                # function marker: "func" key in dict
                # the function will be called, and its return value will be binded to the variable.
                func_name = data['func']
                args = self.get_eval_value(data.get('args', []))
                kargs = self.get_eval_value(data.get('kargs', {}))
                return self.functions[func_name](*args, **kargs)
            else:
                evaluated_data = {}
                for key, value in data.items():
                    evaluated_data[key] = self.get_eval_value(value)

                return evaluated_data

        return data
コード例 #3
0
    def substitute(content):
        """ substitute content recursively, each variable will be replaced with bind value.
            variables marker: ${variable}.
        """
        if isinstance(content, str):
            return utils.parse_content_with_variables(content, variables_binds)

        if isinstance(content, list):
            return [substitute(item) for item in content]

        if isinstance(content, dict):
            parsed_content = {}
            for key, value in content.items():
                parsed_content[key] = substitute(value)

            return parsed_content

        return content