Robot Framework官方教程(五)使用测试库
Robot Framework官方教程(一)入门
Robot Framework官方教程(二)测试数据语法
Robot Framework官方教程(三)创建测试用例
Robot Framework官方教程(四)创建测试套件
Robot Framework官方教程(五)使用测试库
Robot Framework官方教程(六)变量
Robot Framework官方教程(七)创建用户关键字
Robot Framework官方教程(八) 资源和变量文件
Robot Framework官方教程(九) 执行测试用例
Robot Framework官方教程(十)扩展RobotFramework框架
使用测试库
测试库包含那些最低级别的关键字,通常称为 库关键字,实际上与被测系统交互。所有测试用例总是使用某些库中的关键字,通常是通过更高级别的用户关键字。本节介绍如何使用测试库以及如何使用它们提供的关键字。创建测试库在单独的部分中描述。
2.4.1使用测试库
下面的小节给出了使用测试库的说明。
使用库设置
通常使用“ 设置”表中的“ 库”设置导入测试库,并在后续列中具有库名称。库名称区分大小写(它是实现库的模块或类的名称,并且必须完全正确),但忽略其中的任何空格。使用模块中的Python库或包中的Java库,必须使用包括模块或包名称的全名。
在库需要参数的情况下,它们列在库名后面的列中。与关键字的参数类似,可以在测试库导入中使用默认值,可变数量的参数和命名参数。可以使用变量设置库名称和参数。
Setting | Value | Value | Value |
---|---|---|---|
Library | OperatingSystem | ||
Library | com.company.TestLib | ||
Library | MyLibrary | arg1 | arg2 |
Library | ${LIBRARY} |
可以在测试用例文件, 资源文件和测试套件初始化文件中导入测试库。在所有这些情况下,导入库中的所有关键字都可在该文件中使用。对于资源文件,这些关键字也可以在使用它们的其他文件中使用。
使用Import Library关键字
采取测试库投入使用另一种可能性是使用关键字导入库从内建库。此关键字与库设置类似地获取库名称和可能的参数。导入库中的关键字在测试套件中可用,其中使用了Import Library关键字。如果在测试执行开始时库不可用并且只有其他一些关键字使其可用,则此方法很有用。
Test Case | Action | Argument | Argument | Argument |
---|---|---|---|---|
Example | Do Something | |||
Import Library | MyLibrary | arg1 | arg2 | |
KW From Mylibrary |
库搜索路径
指定要导入的测试库的最常用方法是使用其名称,就像在本节的所有示例中一样。在这些情况下,Robot Framework尝试从库搜索路径中查找实现库的类或模块。基本上,这意味着库代码及其所有可能的依赖项必须在PYTHONPATH中,或者在Jython上运行测试时,必须在 CLASSPATH中。设置库搜索路径在其自身的一节中进行了解释。库还可以自动设置搜索路径,或者有关于如何执行此操作的特殊说明。例如,所有 标准库都自动位于库搜索路径中。
这种方法的最大好处是,当配置库搜索路径时,通常使用自定义启动脚本,普通用户不需要考虑实际安装库的位置。缺点是将您自己的,可能非常简单的库放入搜索路径可能需要一些额外的配置。
使用到库的路径
指定要导入的库的另一种机制是在文件系统中使用它的路径。此路径被认为是相对于当前测试数据文件所在的目录,与资源和变量文件的路径类似。这种方法的主要好处是无需配置库搜索路径。
如果库是文件,则其路径必须包含扩展名。对于Python库,扩展名自然是.py,对于Java库,它可以是.class或.java,但类文件必须始终可用。如果将Python库实现为目录,则其路径必须具有正斜杠(/)。以下示例演示了这些不同的用法。
Setting | Value | Value | Value |
---|---|---|---|
Library | PythonLib.py | ||
Library | /absolute/path/JavaLib.java | ||
Library | relative/path/PythonDirLib/ | possible | arguments |
Library | ${RESOURCES}/Example.class |
这种方法的局限性在于,作为Python类实现的库必须位于与类同名的模块中。此外,使用此机制无法导入以JAR或ZIP包分发的库。
2.4.2给测试库设置自定义名称
库名称显示在关键字名称之前的测试日志中,如果多个关键字具有相同的名称,则必须使用它们,以便 关键字名称以库名称为前缀。库名通常来自实现它的模块或类名,但在某些情况下需要更改它:
- 需要使用不同的参数多次导入同一个库。否则这是不可能的。
- 库名称不方便长。例如,如果Java库具有长包名称,则可能发生这种情况。
- 您希望使用变量在不同环境中导入不同的库,但请使用相同的名称引用它们。
- 库名称具有误导性或其他差异性。在这种情况下,更改实际名称当然是更好的解决方案。
指定新名称的基本语法是在库名后面加上文本 WITH NAME(不区分大小写),然后在下一个单元格中使用新名称。指定的名称显示在日志中,并且在使用关键字的全名(LibraryName.Keyword Name)时必须在测试数据中使用。
Setting | Value | Value | Value |
---|---|---|---|
Library | com.company.TestLib | WITH NAME | TestLib |
Library | ${LIBRARY} | WITH NAME | MyName |
库的可能参数放在原始库名称和WITH NAME文本之间的单元格中。以下示例说明了如何使用不同的参数多次导入相同的库:
Setting | Value | Value | Value | Value | Value |
---|---|---|---|---|---|
Library | SomeLibrary | localhost | 1234 | WITH NAME | LocalLib |
Library | SomeLibrary | server.domain | 8080 | WITH NAME | RemoteLib |
Test Case | Action | Argument | Argument |
---|---|---|---|
My Test | LocalLib.Some Keyword | some arg | second arg |
RemoteLib.Some Keyword | another arg | whatever | |
LocalLib.Another Keyword |
将自定义名称设置为测试库既可以在“设置”表中导入库,也可以在使用“ 导入库”关键字时使用。
2.4.3标准库
一些测试库与Robot Framework一起分发,这些库称为标准库。这些是可用的标准库:
BuiltIn库是特殊的,因为它自动使用,因此它的关键字始终可用。其他标准库需要以与任何其他库相同的方式导入,但不需要安装它们。此外,它们在使用Python和Jython运行测试时也起作用(将Screenshot库作为例外)。
将来可以并且将来添加新的标准库。如果您对新标准库有所了解,或者甚至可以立即合并,请联系Robot Framework开发人员。通常,如果库是通用的,则可以将库添加到标准库中,在没有任何外部依赖性的情况下在Python和Jython上工作,并且经过充分的测试和记录。
BuiltIn库
BuiltIn库提供了一组经常需要的通用关键字。它会自动导入,因此始终可用。提供的关键字可用于例如验证(例如,应该等于,应该包含),转换(例如转换为整数)和用于各种其他目的(例如,日志,睡眠,运行关键字如果,设置全局变量)。
BuiltIn库中的关键字名称已在Robot Framework 1.8版中重命名。所有旧关键字仍然有效,但不推荐使用的关键字的长名称(日志文件中可见的名称)以DeprecatedBuiltIn开头。(例如, DeprecatedBuiltIn.Equals)。强烈建议使用关键字的新名称,因为旧版本将来会被删除。
有关更多信息,请参阅BuiltIn库文档。
OperatingSystem库
OperatingSystem库允许在运行Robot Framework的系统中执行各种与操作系统相关的任务。除其他外,它可以执行命令(例如运行),创建和删除文件和目录(例如创建文件,删除目录),检查文件或目录是否存在或包含某些内容(例如文件应该存在,目录应该为空)和操纵环境变量(例如设置环境变量)。
OperatingSystem库中的关键字名称已在Robot Framework 1.8中重命名,类似于BuiltIn关键字的名称。
有关更多信息,请参阅OperatingSystem库文档。
Telnet库
Telnet库可以连接到Telnet服务器并在打开的连接上执行命令。
有关更多信息,请参阅Telnet库文档。
Collections 集合库
Collections库提供了一组用于处理Python列表和字典的关键字。该库具有关键字,例如,用于修改和获取列表和词典中的值(例如,附加到列表,从词典中获取)以及用于验证其内容(例如,列表应该相等, 词典应该包含值)。
有关更多信息,请参阅集合库文档。
String 字符串库
字符串库可以操作字符串(例如,使用Regexp替换字符串,拆分为行)并验证其内容(例如,应该是字符串)。
有关更多信息,请参阅字符串库文档。该库是Robot Framework 2.1中的新增功能。
Dialogs 对话框库
Dialogs库提供暂停测试执行和从用户获取输入的方法。对话框略有不同,具体取决于在Python或Jython上运行的测试,但它们提供相同的功能。
有关更多信息,请参阅Dialogs库文档。该库是Robot Framework 2.1中的新增功能。
ScreenShot 截图库
屏幕截图库具有捕获和存储整个桌面的屏幕截图的关键字。该库使用Java AWT API实现,因此只有在Jython上运行Robot Framework时才能使用它。
有关更多信息,请参阅屏幕截图库文档。
Remote 远程库
远程库与其他标准库完全不同。它没有自己的任何关键字,但它作为Robot Framework和实际测试库实现之间的代理。这些库可以在除核心框架之外的其他机器上运行,甚至可以使用Robot Framework本身不支持的语言来实现。
有关该概念的更多信息,请参见单独的远程库接口部分。该库是Robot Framework 2.1中的新增功能。
2.4.4外部库
根据定义,任何不属于标准库的测试库都是外部库。Robot Framework开发人员提供了一些通用库,例如SeleniumLibrary和SwingLibrary,它们不与框架本身打包在一起,因为它们需要外部依赖项。通用库也可以由其他方提供,大多数团队也只为自己提供一些自定义库。
不同的外部库可以使用完全不同的机制来安装和引入它们。通常,它们还需要单独安装其他一些依赖项。所有库都应该有明确的说明,并最好自动化安装。
有关如何为自己的或一般用法创建新测试库的更多信息,请参阅创建测试库部分。