远程库接口

介绍准备

有两个主要原因使用远程库API:

  • 可以实际库在不同的机器上 在机器人运行框架。 这允许有趣 分布式测试的可能性。
  • 对于Python、Java、Ruby。 净,Clojure、Perl和node . js。

最重要的一个 xml - rpc通道。 所有这一切的高级体系结构 下图所示:

robotframework笔记23

机器人与远程库体系结构框架

请注意

模块。 它 不支持自定义xml - rpc扩展的xml - rpc实现 服务器。

考虑远程库使用

导入远程库

*** Settings ***
Library    Remote    http://127.0.0.1:8270       WITH NAME    Example1
Library    Remote    http://example.com:8080/    WITH NAME    Example2
Library    Remote    http://10.0.0.2/example    1 minute    WITH NAME    Example3

是远程服务器的端口将使用默认情况下。 

请注意

默认情况下。

请注意

将被修改。

默认超时时间通常是几分钟,但这取决于 操作系统及其配置。 注意,设置 一个超时,比关键字执行时间短会中断 关键字。

请注意

支持超时2.8.6机器人框架中的一个新特性。 超时不与IronPython Python / Jython 2.5也不工作。

启动和停止远程服务器

因为图书馆测试执行开始时不可用。

如何停止远程服务器取决于它是如何 实现的。 通常服务器支持以下方法:

  • 所使用的关键字,可以很容易地执行测试。
  • 在他们的方法 xml - rpc接口。
  • 在控制台服务器正在运行 停止服务器。
  • )。

请注意

方法。

支持参数和返回值类型

因为xml - rpc协议不支持所有可能的对象 类型、值之间传输和远程远程库 服务器必须转换为兼容的类型。 这适用于 关键字参数传递给远程服务器和远程库 返回值的服务器回馈到远程库。

远程服务器远程库和Python处理Python值 根据以下规则。 其他远程服务器应该有类似的表现。

  • 字符串、数字和布尔值是通过没有修改。
  • 转化为一个空字符串。
  • 所有列表、元组和其他iterable(除了字符串和对象 字典)传递列表以便其内容被转换 递归。
  • 字典和其他映射是通过字典,这样他们的钥匙 转换为字符串和递归地值转换为支持的类型。
  • 在内部使用 xml - rpc base64数据类型。 收到二进制对象会自动转换 字节的字符串。
  • 其他类型转换为字符串。

请注意

机器人框架2.8.3之前,只有列表、元组和字典 根据上述规则处理。 一般iterable和 映射不支持。 此外二进制支持是新的 机器人框架2.8.4并返回dot-accessible新字典 在机器人框架2.9。

远程协议

本节解释之间的远程使用的协议 图书馆和远程服务器。 这些信息主要是针对 那些想要创建新的远程服务器。 提供的Python和 红宝石服务器也可以作为例子。

,这是一个 简单的远程过程调用协议使用XML / HTTP。 大多数 主流语言(Python、Java、C、Ruby、Perl、Javascript,PHP, …)有一个支持xml - rpc内置或作为一个扩展。

必需的方法

也推荐。 请注意, 在方法名使用camelCase格式目前是不可能的。 如何 实际的实现关键字是远程无关 图书馆。 远程服务器可以作为真正的考验的一个包装器 库,像Python和Ruby提供的服务器,也可以 实现关键字本身。

根据停止被允许。 这使得它 外部工具可以知道并停止服务器成功。

获取远程关键字名称和其他信息

方法。 这个方法必须 返回关键字名称作为一个字符串列表。

工具。

执行远程关键字

入口是强制性的, 其他人可以省略,如果他们不适用。

字典条目在遥远的结果
的名字 解释
状态 强制执行状态。 通过或失败。
输出
返回
错误 可能的错误消息。 只有当使用执行失败。
回溯 使用 执行失败时调试水平。
可持续 。 新机器人2.8.4框架。
致命的 。 在机器人框架2.8.4也新。

不同的参数语法

方法只有当他们已经使用的测试数据。

类似于下面的吗 Python和Java的例子,这取决于语言处理可选的 参数。

def run_keyword(name, args, kwargs=None):
    # ...
public Map run_keyword(String name, List args) {
    // ...
}

public Map run_keyword(String name, List args, Map kwargs) {
    // ...
}

请注意

从 机器人2.8.3框架。

相关文章: