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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容