简介

Robot Framework是一个基于Python的,可扩展的关键字驱动的测试自动化框架,用于端到端验收测试和验收测试驱动开发(ATDD)。它可用于测试分布式异构应用程序,其中验证需要涉及多种技术和接口。

为何选择Robot Framework?

  • 启用易于使用的表格语法,以统一的方式创建测试用例。
  • 提供从现有关键字创建可重复使用的更高级别关键字的功能。
  • 提供易于阅读的结果报告和HTML格式的日志。
  • 平台和应用程序是独立的。
  • 提供一个简单的库API,用于创建自定义测试库,可以使用Python或Java本机实现。
  • 提供命令行界面和基于XML的输出文件, 以便集成到现有构建基础架构(持续集成系统)中。
  • 为Selenium提供Web测试,Java GUI测试,运行进程,Telnet,SSH等支持。
  • 支持创建数据驱动的测试用例。
  • 内置对变量的支持,特别适用于不同环境下的测试。
  • 提供标记以分类和选择要执行的测试用例。
  • 实现与源代码控制的轻松集成:测试套件只是可以使用生产代码进行版本控制的文件和目录。
  • 提供测试用例和测试套件级别的设置和拆卸。
  • 模块化架构支持创建测试,即使对于具有多种不同接口的应用程

高级架构

Robot Framework是一个通用的,应用程序和技术独立的框架。它具有高度模块化的架构,如下图所示。

Robot Framework_python

版权和许可

版权所有2008-2012 Nokia Siemens Networks Oyj


根据Apache许可证2.0版(“许可证”)获得许可;
除非符合许可,否则您不得使用此文件。
您可以在以下位置获取许可证副本


http://www.apache.org/licenses/LICENSE-2.0


除非适用法律要求或书面同意,否则软件
根据许可证分发的“按现状”分发,
不附带任何明示或暗示的保证或条件。
有关管理权限的特定语言,请参阅许可证
许可证下的限制。
内置工具

从Robot Framework 2.7开始,libdoc,testdoc和tidy工具与核心框架捆绑在一起,并有自己的入口点。它们也可以使用-m选项作为模块执行,也可以直接作为脚本执行。下表列出了使用Python的入口点,但它们可以与任何支持的解释器一起使用。

Robot Framework_html_02

Python包管理器

Python现在有各种优秀的包管理器可用于安装和管理Python包。最着名的是 easy_install及其pip。我们强烈推荐pip,因为它更积极地开发并具有很好的功能,例如支持卸载。

不同的包管理器有不同的用法,但是使用pip 和easy_install,基本用法类似:

# Install the latest version
pip install robotframework
easy_install robotframework


# Upgrade to the latest version
pip install --upgrade robotframework
easy_install --upgrade robotframework


# Install a specific version
pip install robotframework==2.7.1
easy_install robotframework==2.7.1


# Uninstall -- only supported by pip
pip uninstall robotframework

支持的文件格式

Robot Framework测试数据支持以表格格式定义,使用超文本标记语言(HTML),制表符分隔值(TSV),纯文本或reStructuredText(reST)格式。Robot Framework根据文件扩展名为测试数据选择解析器。扩展名不区分大小写,识别的扩展名为 .html,.htm和.xhtml用于HTML,.tsv 用于TSV,.txt用于纯文本,.rst或 .rest用于reStructuredText。

解析数据的规则

当Robot Framework解析测试数据时,它会忽略:

  • 所有不以第一个单元格中的已识别表名开头的表。
  • 除了第一个单元格之外,表格第一行上的所有其他内容。
  • HTML / reST中的表外数据和TSV中第一个表之前的数据。
  • 所有空行,这意味着可以使用这些行来使表更具可读性。
  • 行尾的所有空单元格; 您必须添加反斜杠(\)以防止忽略此类单元格。
  • 所有单反斜杠(\); 它们被用作转义。
  • 哈希标记(#)后面的所有字符,如果它是单元格的第一个字符; 这意味着哈希标记可用于在测试数据中输入注释。
  • HTML / reST测试数据中的所有格式。


Robot Framework解析器的转义字符是反斜杠(\)。转义字符可以使用如下:

  • 要转义特殊字符以便使用它们的文字值:
  • ​\${notvar}​​​表示看起来像变量的文字字符串​​${notvar}​
  • ​\\​​​表示单个反斜杠(例如,​​C:\\Temp​​)
  • ​\#​​​表示文字哈希(​​#​​)标记,即使在单元格的开头
  • 影响空格的解析。
  • 为了防止在使用纯文本格式时在一般的行末和任何地方忽略空单元格。另一种更常见的可能性是使用内置变量 ​​${EMPTY}​​。
  • 在使用管道和空格分隔格式时转义管道字符。
  • 使用纯文本格式时,在for循环中转义缩进的单元格。
  • 防止链接文档使用换行符拆分为多行。


Robot Framework处理空格(例如空格,换行符和制表符)的方式与在HTML中处理它们的方式相同。这意味着Robot Framework:

  • 删除所有单元格中的首尾空格。
  • 将多个连续空格更改为单个空格。
  • 将所有换行符和制表符转换为空格。

为了防止Robot Framework根据这些规则解析数据,可以使用反斜杠:

  • 在行首空格之前,例如​​\ some text​​。
  • 在连续的空格之间,例如​​text \ \ more text​​。
  • 行尾空格,例如一些文本​​some text \ \​​。
  • 作为​​\n​​创建换行符,例如​​first line\n2nd line​​。
  • 作为​​\t​​来创建制表符,例如​​text\tmore text​​。
  • 作为​​\r​​来创建回车符,例如​​text\rmore text​​。

表示首尾或连续空格的另一种更常见的方法是使用内置变量 ​​${SPACE}​​​。该扩展变量甚至允许类似语法​​${SPACE *8}​​,这使得处理连续空格非常简单。

标准库

一些测试库与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中的新增功能。

外部库

根据定义,任何不属于标准库的测试库都是外部库。Robot Framework开发人员提供了一些通用库,例如SeleniumLibrary和SwingLibrary,它们不与框架本身打包在一起,因为它们需要外部依赖项。通用库也可以由其他方提供,大多数团队也只为自己提供一些自定义库。

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

Selenium简介

Selenium也是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE、Mozilla Firefox、Mozilla Suite等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。Selenium 是ThoughtWorks专门为Web应用程序编写的一个验收测试工具。最后引用selenium官网的一句话:Selenium is a suite of tools to automate web browsers across many platforms.

Selenium组件

•   Selenium IDE:一个Firefox插件,可以录制用户的基本操作,生成测试用例。随后可以运行这些测试用例在浏览器里回放,可将测试用例转换为其他语言的自动化脚本。

•   Selenium Remote Control (RC) :支持多种平台(Windows,Linux,Solaris)和多种浏览器(IE,Firefox,Opera,Safari),可以用多种语言(Java,Ruby,Python,Perl,PHP,C#)编写测试用例。

•   Selenium Grid :允许Selenium-RC 针对规模庞大的测试案例集或者需要在不同环境中运行的测试案例集进行扩展

•   WebDriver:WebDriver是对selenium的一个封装。

Selenium 2.0 = Selenium 1 + WebDriver

Robot Framework+WebDriver 架构

Robot Framework_测试用例_03



关注公众号 soft张三丰 

Robot Framework_html_04