Robot Framework(五)使用测试库
使用测试库
测试库包含那些最低级别的关键字,通常称为 库关键字,实际上与被测系统交互。所有测试用例总是使用某些库中的关键字,通常是通过更高级别的用户关键字。本节介绍如何使用测试库以及如何使用它们提供的关键字。创建测试库在单独的部分中描述。
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,它们不与框架本身打包在一起,因为它们需要外部依赖项。通用库也可以由其他方提供,大多数团队也只为自己提供一些自定义库。
不同的外部库可以使用完全不同的机制来安装和引入它们。通常,它们还需要单独安装其他一些依赖项。所有库都应该有明确的说明,并最好自动化安装。
有关如何为自己的或一般用法创建新测试库的更多信息,请参阅创建测试库部分。
Robot Framework(五)使用测试库的更多相关文章
- Robot Framework - 2 - 创建测试库
04- 创建测试库--基础概念 Robot Framework 实际的测试能力是由测试库提供的. ***** 支持的编程语言 Robot Framework 自身是用 Python 编写的,能使用 P ...
- Robot Framework - 建立本地测试环境
注意:本文内容是以“在Window7系统中安装本地RobotFrmamework自动化测试环境”为例. Robot Framework简介 HomePage:http://robotframework ...
- Robot Framework - 基础关键字 BuiltIn 库(二)
本篇教程,我们继续接着上篇内容进行讲解,我们本节教程讲解的是Robot Framework 机器人框架中的变量中使用判断.字符串的拼接.Evaluate的用法.调用Python文件.条件分支语句.以及 ...
- Robot Framework - 基础关键字 BuiltIn 库(一)
今天给大家分享的是Robot Framework 机器人框架中 BuiltIn 基础库的使用...BuiltIn 库里面提供了很多基础方法助力于我们在自动化测试领域中做的更好!——本系列教程是教会大家 ...
- Robot Framework常用的操作库列表
标准库是Robot Framework可以直接导入使用的库,包含以下几类: Builtin:包含经常需要的关键字.自动导入无需import,因此总是可用的 Dialogs:提供了暂停测试执行和从用户的 ...
- 学习Robot Framework必须掌握的库—-BuiltIn库
作为一门表格语言,为了保持简单的结构,RF没有像别的高级语言那样提供类似if else while等内置关键字来实现各种逻辑功能,而是提供给了用户BuiltIn库.如果用户想在测试用例中实现比较复杂的 ...
- robotframework的学习笔记(十四)------学习Robot Framework必须掌握的库—-BuiltIn库
作为一门表格语言,为了保持简单的结构,RF没有像别的高级语言那样提供类似if else while等内置关键字来实现各种逻辑功能,而是提供给了用户BuiltIn库.如果用户想在测试用例中实现比较复杂的 ...
- 【转】学习Robot Framework必须掌握的库—-BuiltIn库
作为一门表格语言,为了保持简单的结构,RF没有像别的高级语言那样提供类似if else while等内置关键字来实现各种逻辑功能,而是提供给了用户BuiltIn库.如果用户想在测试用例中实现比较复杂的 ...
- 用Robot Framework+python来测试基于socket通讯的C/S系统(网络游戏)
项目终于换了方案,改用socket来实现而不是之前的http了,所以测试工具就不能用以前的了,因为测试人手少,逼不得已的必须要挖掘更多的自动化方案来弥补.于是先研究了下python的socket解决方 ...
随机推荐
- hdu_1041_Computer Transformation_201311051648
Computer Transformation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/ ...
- [poj3735] Training little cats_矩乘快速幂
Training little cats poj-3735 题目大意:给你n个数,k个操作,将所有操作重复m次. 注释:三种操作,将第i个盒子+1,交换两个盒子中的个数,将一个盒子清空.$1\le m ...
- JQuery获取select选中值和清除选中状态(转)
1.获取值 var provinceSearch = $("#loc_province_search").find("option:selected").att ...
- ELECTRON开发环境配置方法
1.下载并安装Node.js 下载地址:https://nodejs.org/en/download/current/ 安装之后进行验证 2.下载并这装electron 安装命令:npm instal ...
- applicationcontext理解使用
Spring ApplicationContext 容器 Application Context 是 spring 中较高级的容器.和 BeanFactory 类似,它可以加载配置文件中定义的 bea ...
- [Algorithms] The Bayes Rule
Prior odd: The idea is to take the odds for something happening (against it not happening), which we ...
- java代理使用 apache ant实现文件压缩/解压缩
[背景] 近日在研究web邮件下载功能,下载的邮件能够导入foxmail邮件client.可是批量下载邮件还需将邮件打成一个压缩包. 从网上搜索通过java实现文件压缩.解压缩有非常多现成的样例. [ ...
- android 用java代码设置布局、视图View的宽度/高度或自适应
在achat项目中,对话内容的长宽设置为自适应.可是假设文本内容太多,则宽度几乎相同布满,若自己说的和对方说的都非常多内容.则满屏都是文字.则不easy分辨出是来自别人说的还是自己说的.那么须要对本身 ...
- edittext禁止android软键盘弹出
1. EditText ed=(EditText) findViewById(R.id.test); ed.clearFocus(); 2. 在AndroidMainfest.xml中选择哪个acti ...
- codeforces Looksery Cup 2015 D. Haar Features
The first algorithm for detecting a face on the image working in realtime was developed by Paul Viol ...