远程库接口
。
介绍准备
有两个主要原因使用远程库API:
- 可以实际库在不同的机器上 在机器人运行框架。 这允许有趣 分布式测试的可能性。
- 对于Python、Java、Ruby。 净,Clojure、Perl和node . js。
最重要的一个 xml - rpc通道。 所有这一切的高级体系结构 下图所示:
机器人与远程库体系结构框架
请注意
模块。 它 不支持自定义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框架。