Robot Framework(五)使用测试库

使用测试库

测试库包含那些最低级别的关键字,通常称为 库关键字,实际上与被测系统交互。所有测试用例总是使用某些库中的关键字,通常是通过更高级别的用户关键字。本节介绍如何使用测试库以及如何使用它们提供的关键字。创建测试库在单独的部分中描述。

2.4.1使用测试库

下面的小节给出了使用测试库的说明。

使用库设置

通常使用“ 设置”表中的“ 库”设置导入测试库,并在后续列中具有库名称。库名称区分大小写(它是实现库的模块或类的名称,并且必须完全正确),但忽略其中的任何空格。使用模块中的Python库或包中的Java库,必须使用包括模块或包名称的全名。

在库需要参数的情况下,它们列在库名后面的列中。与关键字的参数类似,可以在测试库导入中使用默认值,可变数量的参数和命名参数。可以使用变量设置库名称和参数。

SettingValueValueValue
LibraryOperatingSystem  
Librarycom.company.TestLib  
LibraryMyLibraryarg1arg2
Library${LIBRARY}  

可以在测试用例文件, 资源文件和测试套件初始化文件中导入测试库。在所有这些情况下,导入库中的所有关键字都可在该文件中使用。对于资源文件,这些关键字也可以在使用它们的其他文件中使用。

使用Import Library关键字

采取测试库投入使用另一种可能性是使用关键字导入库从内建库。此关键字与库设置类似地获取库名称和可能的参数。导入库中的关键字在测试套件中可用,其中使用了Import Library关键字。如果在测试执行开始时库不可用并且只有其他一些关键字使其可用,则此方法很有用。

Test CaseActionArgumentArgumentArgument
ExampleDo Something   
 Import LibraryMyLibraryarg1arg2
 KW From Mylibrary   
库搜索路径

指定要导入的测试库的最常用方法是使用其名称,就像在本节的所有示例中一样。在这些情况下,Robot Framework尝试从库搜索路径中查找实现库的类或模块。基本上,这意味着库代码及其所有可能的依赖项必须在PYTHONPATH中,或者在Jython上运行测试时,必须在 CLASSPATH中。设置库搜索路径在其自身的一节中进行了解释。库还可以自动设置搜索路径,或者有关于如何执行此操作的特殊说明。例如,所有 标准库都自动位于库搜索路径中。

这种方法的最大好处是,当配置库搜索路径时,通常使用自定义启动脚本,普通用户不需要考虑实际安装库的位置。缺点是将您自己的,可能非常简单的库放入搜索路径可能需要一些额外的配置。

使用到库的路径

指定要导入的库的另一种机制是在文件系统中使用它的路径。此路径被认为是相对于当前测试数据文件所在的目录,与资源和变量文件的路径类似。这种方法的主要好处是无需配置库搜索路径。

如果库是文件,则其路径必须包含扩展名。对于Python库,扩展名自然是.py,对于Java库,它可以是.class或.java,但类文件必须始终可用。如果将Python库实现为目录,则其路径必须具有正斜杠(/)。以下示例演示了这些不同的用法。

SettingValueValueValue
LibraryPythonLib.py  
Library/absolute/path/JavaLib.java  
Libraryrelative/path/PythonDirLib/possiblearguments
Library${RESOURCES}/Example.class  

这种方法的局限性在于,作为Python类实现的库必须位于与类同名的模块中。此外,使用此机制无法导入以JAR或ZIP包分发的库。

2.4.2给测试库设置自定义名称

库名称显示在关键字名称之前的测试日志中,如果多个关键字具有相同的名称,则必须使用它们,以便 关键字名称以库名称为前缀。库名通常来自实现它的模块或类名,但在某些情况下需要更改它:

  • 需要使用不同的参数多次导入同一个库。否则这是不可能的。
  • 库名称不方便长。例如,如果Java库具有长包名称,则可能发生这种情况。
  • 您希望使用变量在不同环境中导入不同的库,但请使用相同的名称引用它们。
  • 库名称具有误导性或其他差异性。在这种情况下,更改实际名称当然是更好的解决方案。

指定新名称的基本语法是在库名后面加上文本 WITH NAME(不区分大小写),然后在下一个单元格中使用新名称。指定的名称显示在日志中,并且在使用关键字的全名(LibraryName.Keyword Name)时必须在测试数据中使用。

SettingValueValueValue
Librarycom.company.TestLibWITH NAMETestLib
Library${LIBRARY}WITH NAMEMyName

库的可能参数放在原始库名称和WITH NAME文本之间的单元格中。以下示例说明了如何使用不同的参数多次导入相同的库:

SettingValueValueValueValueValue
LibrarySomeLibrarylocalhost1234WITH NAMELocalLib
LibrarySomeLibraryserver.domain8080WITH NAMERemoteLib
Test CaseActionArgumentArgument
My TestLocalLib.Some Keywordsome argsecond arg
 RemoteLib.Some Keywordanother argwhatever
 LocalLib.Another Keyword  

将自定义名称设置为测试库既可以在“设置”表中导入库,也可以在使用“ 导入库”关键字时使用。

2.4.3标准库

一些测试库与Robot Framework一起分发,这些库称为标准库。这些是可用的标准库:

  • BuiltIn
  • OperatingSystem
  • Telnet
  • Collections
  • String
  • Dialogs
  • Screenshot
  • Remote

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,它们不与框架本身打包在一起,因为它们需要外部依赖项。通用库也可以由其他方提供,大多数团队也只为自己提供一些自定义库。

不同的外部库可以使用完全不同的机制来安装和引入它们。通常,它们还需要单独安装其他一些依赖项。所有库都应该有明确的说明,并最好自动化安装。

有关如何为自己的或一般用法创建新测试库的更多信息,请参阅创建测试库部分。

转载于:https://www.cnblogs.com/colos/p/11083314.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值