示例#1
0
文件: client.py 项目: jufei/BtsShell
class JavaRemoteClient(object):

    def __init__(self, url, keyword_class):
        self.keyword_class = keyword_class
        self._robot_remote = Remote(url)
        self._keyword_names = None
        self._keyword_arguments = {}
        self._keyword_documentation = {}

    def get_keyword_names(self):
        """Returns a list of available keywords."""
        if self._keyword_names is None:
            self._keyword_names = self._robot_remote.get_keyword_names()
            if 'stop_remote_server' in self._keyword_names:
                self._keyword_names.remove('stop_remote_server')
        return self._keyword_names

    def run_keyword(self, name, args, kwargs):
        """Runs given keyword."""
        result = self._robot_remote.run_keyword(name, args, kwargs)
        return self._wrap_if_dict(result)

    def _wrap_if_dict(self, value):
        return object_dict(value) if isinstance(value, dict) else value

    def get_keyword_arguments(self, name):
        """Returns a list of argument names for given keyword."""
        if name not in self._keyword_arguments:
            self._keyword_arguments[name] = self._robot_remote.get_keyword_arguments(name)
        return self._keyword_arguments[name]

    def get_keyword_documentation(self, name):
        """Returns the documentation for given keyword."""
        if name not in self._keyword_documentation:
            self._keyword_documentation[name] = self._robot_remote.get_keyword_documentation(name)
        return self._keyword_documentation[name]