Robot Framework 新版教程 - 使用测试库
(Robot Framework 7.x 教程, Part 6)
测试库包含了那些最底层的关键字(通常称为库关键字),它们负责与被测系统进行实际交互。所有测试用例都需要使用来自某个库的关键字,通常通过更高层级的用户关键字间接调用。本节说明如何引入测试库以及如何使用它们提供的关键字。创建测试库将在单独的章节中描述。
导入库
测试库通常使用 Settings section 中的 Library 设置导入,也可以使用 Import Library 关键字导入。
使用 Library 设置
库通常在 Settings section 中通过 Library 设置导入,其值为库名称或路径。与大多数其他数据不同,库名称或路径区分大小写和空格。如果库在某个包中,则必须使用包含包名的完整名称。
当库需要参数时,参数列在库名称之后的列中。测试库导入中可以使用默认值、可变数量参数和命名参数,与关键字参数的用法类似。库名称和参数都可以使用变量设置。
*** Settings ***
Library OperatingSystem
Library path/to/MyLibrary.py
Library my.package.TestLibrary
Library LibraryAcceptingArguments arg1 arg2
Library ${LIBRARY}
可以在套件文件、资源文件和套件初始化文件中导入测试库。在所有这些情况下,导入库中的所有关键字在该文件中都可用。对于资源文件,这些关键字在使用该资源文件的其他文件中也可用。
使用 Import Library 关键字
引入测试库的另一种方式是使用 BuiltIn 库中的 Import Library 关键字。该关键字接受库名称或路径以及可能的参数,方式与 Library 设置相同。导入库中的关键字在使用 Import Library 关键字的测试套件中可用。这种方式在测试执行开始时库尚不可用、需要通过其他关键字使其可用的场景中很有用。
*** Test Cases ***
Example
Do Something
Import Library MyLibrary arg1 arg2
KW From MyLibrary
指定要导入的库
要导入的库可以通过库名称或库路径来指定。无论是使用 Library 设置还是 Import Library 关键字导入库,这两种方式的工作方式都相同。
使用库名称
指定要导入的测试库最常见的方式是使用其名称。在这种情况下,Robot Framework 会尝试从模块搜索路径中查找实现该库的类或模块。通过某种方式安装的库应该会自动出现在模块搜索路径中,但对于其他库,可能需要单独配置搜索路径。
*** Settings ***
Library OperatingSystem
Library CustomLibrary possible arguments
Library librarymodule.LibraryClass
这种方式的最大好处是,当模块搜索路径配置好之后(通常使用自定义启动脚本),普通用户不需要关心库实际安装在哪里。缺点是将自己的(可能非常简单的)库添加到搜索路径中可能需要一些额外的配置。
使用库的物理路径
指定要导入的库的另一种机制是使用文件系统中的路径。该路径被视为相对于当前测试数据文件所在目录的路径,与资源文件和变量文件的路径处理方式类似。这种方式的主要好处是不需要配置模块搜索路径。
如果库是一个文件,路径必须包含扩展名(即 .py)。如果库实现为一个目录,当使用相对路径时必须以斜杠(/)结尾。使用绝对路径时,结尾斜杠是可选的。以下示例演示了这些不同的用法。
*** Settings ***
Library PythonLibrary.py
Library relative/path/PythonDirLib/ possible arguments
Library ${RESOURCES}/Example.py
为库设置自定义名称
库名称在测试日志中显示在关键字名称之前,如果多个关键字同名,使用时必须在关键字名前加上库名称作为前缀。库名称通常取自实现它的模块或类名称,但在以下情况下可能需要修改:
- 需要使用不同参数多次导入同一个库。否则无法实现。
- 库名称过长不方便使用。
- 需要使用变量在不同环境中导入不同的库,但用相同的名称引用它们。
- 库名称具有误导性或不够好。当然,在这种情况下更好的方案是修改实际名称。
指定新名称的基本语法是在库名称后面加上 AS(区分大小写),然后是新名称。指定的名称将显示在日志中,并且在使用关键字的全名(LibraryName.Keyword Name)时必须使用该名称。
*** Settings ***
Library packagename.TestLib AS TestLib
Library ${LIBRARY} AS MyName
库的参数放在原始库名称和 AS 标记之间。以下示例展示了如何使用不同参数多次导入同一个库:
*** Settings ***
Library SomeLibrary localhost 1234 AS LocalLib
Library SomeLibrary server.domain 8080 AS RemoteLib
*** Test Cases ***
Example
LocalLib.Some Keyword some arg second arg
RemoteLib.Some Keyword another arg whatever
LocalLib.Another Keyword
为测试库设置自定义名称在 Settings section 中导入库和使用 Import Library 关键字时都有效。
在 Robot Framework 6.0 之前,为库设置自定义名称时使用的标记是
WITH NAME而非AS。旧语法仍然有效,但已被视为弃用,最终将被移除。
标准库
一些测试库随 Robot Framework 一起分发,这些库称为标准库。BuiltIn 库比较特殊,因为它会自动引入,其关键字始终可用。其他标准库需要像其他库一样导入,但无需单独安装。
常规标准库
可用的常规标准库如下(附文档链接):
Remote 库
除了上面列出的常规标准库外,还有一个 Remote 库,它与其他标准库完全不同。它本身没有任何关键字,而是充当 Robot Framework 与实际测试库实现之间的代理。这些库可以运行在与核心框架不同的机器上,甚至可以使用 Robot Framework 原生不支持的语言实现。
更多信息请参阅单独的"远程库接口"章节。
外部库
任何不属于标准库的测试库,按定义都是外部库。Robot Framework 开源社区实现了多个通用库,如 SeleniumLibrary 和 SwingLibrary,它们并未随核心框架打包。公开可用库的列表可在 http://robotframework.org 上找到。
通用库和自定义库显然也可以由使用 Robot Framework 的团队自行实现。更多信息请参阅"创建测试库"章节。
不同的外部库可能有完全不同的安装和使用机制。它们有时还可能需要单独安装一些其他依赖。所有库都应该有清晰的安装和使用文档,并且最好能自动化安装过程。