首页 > Python自动化测试 阅读数:43

初识Robot Framework测试框架

Robot Framework 是一款用 Python 编写的通用型测试框架,具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端(Web、PC、移动端)或者接口,也可以进行分布式测试执行。常用于验收测试和验收测试驱动开发(ATDD)的自动化测试。虽然框架本身是基于 Python 编写的,但也可以在 Jython(Java) 和 IronPython(.NET) 上运行,提供跨平台支持。

Robot Framework 框架是一个通用的应用和技术的独立框架。它有一个高度模块化的架构,如图 1 所示(摘自官网)。

Robot Framework 架构图
图 1:Robot Framework 架构图

Robot Framework 框架优势和亮点

Robot Framework 框架具备非常多的优势和亮点,包括但不限于:
  • 易于使用,采用表格式语法,统一测试用例格式。
  • 重用性好,可以利用现有关键字来组合新关键字。
  • 支持多种变量类型(如 List、Dictionary 等)。
  • 支持创建基于数据驱动的测试用例。
  • 结果报告和日志采用 HTML 格式,易于阅读,且自动生成。
  • 提供标签以分类和选择将被执行的测试用例。
  • 支持跨平台运行,如 Windows、Linux、Mac OS。
  • 功能全面,支持 Web 测试、Windows GUI 测试、移动端测试、数据库测试等。
  • 易于扩展,提供了简单 API,用户可以自定义基于 Python 或者 Java 的测试库。
  • 易于集成,提供了命令行接口和基于 XML 的输出文件,支持持续集成(CI),如 Jenkins、Maven 等的集成。
  • 易于与版本管理器集成。
  • 可通过 Pabot 或 Selenium Grid 执行并行测试。
  • 良好的生态系统,支持不同操作系统、远程管理、Telnet、字符串、进程、对话、日期等,还支持各种应用及相关的测试工具(如大家熟知的 Selenium、Appium、AutoIt、Watir 等),包括 Web、移动 App、数据库、通信协议等测试,支持面向 UI 和接口的测试。
  • 关键字脚本丰富、可以灵活地自定义新的关键字,并支持循环、条件语句。
  • 强大的数据驱动,支持外部数据文件、变量文件、资源文件。

Robot Framework 框架不足

虽然Robot Framework 框架提供了非常多优秀的特性,但不论哪一款测试框架都无法做到100%完美,至少无法或在一定程度上不能满足所有人的需求。

Robot Framework 也存在一些不足或者需要改进的地方,如:
  • 自定义HTML 报告较为麻烦。
  • 框架有自身的一套语法,虽然和Python 略同,但对于新手而言,还是有一定学习成本的。
  • 不支持即时断点、逐行调试跟踪功能,调试时,无法像 IDEA 这类工具一样方便。

Robot Framework 生态系统

Robot Framework 框架具有非常丰富的生态系统,它不仅具有易于使用的表格测试数据规则,可精细地控制关键字,支持行为驱动,提供远程测试执行接口进行分布式测试。这些功能由各种通用测试库、特定测试插件和工具组成。

Robot Framework 框架除了自身提供了非常多的基础库功能,也支持第三方扩展库,同时提供了非常多的内建工具、扩展接口,方便框架与其他系统进行对接。这些一起构建了一套全面且易扩展的 Robot Framework 框架生态系统。

1.基本库
  • Builtin:提供内置常用的关键字。
  • Dialogs:提供暂停测试执行以获得用户输入的方法。
  • Collections:提供用于处理 Python 列表、字典的关键字。
  • OperatingSystem:在 Robot Framework 系统中执行各种与操作系统相关的任务。
  • Remote:作为 Robot Framework 与其他测试库之间的代理,实际运行的测试库可以在不同机器上。
  • ScreenShot:提供用于捕捉桌面屏幕截图的基本库。
  • String:用于生成、修改、验证字符串的库。
  • Telnet:可以连接到 Telnet 服务器,并在打开的连接上执行命令。
  • XML:用于生成、修改和验证 XML 文件的库。
  • Process:用于在系统中运行过程的库。
  • DataTime:用于日期和时间转换的库。

2.扩展库
  • AndroidLibrary:用于 Android 自动化测试的库,它内部使用的是 Calabash Android。
  • AnywhereLibrary:用于测试单页应用程序(SPA)的库,它内部使用是 Selenium Webdriver 和 Appium。
  • AppiumLibrary:用于 Android 和 iOS 测试的库,它内部使用的是 Appium。
  • ArchiveLibrary:用于处理 zip 和 tar 归档的库。
  • AutoItLibrary:用于 Windows GUI 的测试库,它内部使用 AutoIt 作为驱动程序。
  • DatabaseLibrary:用于数据库测试的库,分为 Java 和 Python 两类库,一般默认是基于 Python 的库。
  • DiffLibrary:用于两个文件差异比较的库。
  • DjangoLibrary:Python Web 框架 Django 的库。
  • FakerLibrary:虚拟测试数据生成器 Faker 的库。
  • FTPLibrary :用于 Robot Framework 测试和 FTP 服务器的库。
  • HttpLibrary.HTTP:用于使用请求进行 HTTP 级别测试的库。
  • iOSLibrary:用于iOS 自动化测试的库,它内部使用的是 Calabash iOS。
  • ImageHorizonLibrary:GUI 自动化测试的、基于图像识别的、跨平台的纯 Python 库。
  • MongoDBLibrary:使用 PyMongo 与 MongoDB 进行交互的库。
  • MQTTLibrary:用于测试 MQTT 代理和应用程序的库。
  • Rammbock:通用网络协议测试库,提供简单的方式来指定网络数据包,并检查发送和接收数据包的结果。
  • SikuliLibrary:提供关键字以通过Sikulix 测试用户界面,该库支持 Python 2.x  和 3.x。
  • Selenium2Library:使用 Selenium 2 的 Web 测试库,用于 Web UI 自动化测试。
  • SSHLibrary:通过 SSH 连接启用在远程计算机上执行的命令,还支持使用 SFTP 传输文件。
  • SwingLibrary:使用 Swing GUI 测试 Java 应用程序的库。

3.内建工具
  • Rebot:基于 XML 输出生成日志和报告、将多个输出组合在一起的工具。
  • Libdoc:用于为测试库和资源文件生成关键字文档的工具。
  • Testdoc:基于 Robot Framework 测试用例生成高层次 HTML 文档的工具。
  • Tidy:清理和转换 Robot Framework 测试数据文件格式的工具。

4.编辑器
  • RIDE:独立的 Robot Framework 测试数据编辑器。
  • Atom Plugin:Atom 编辑器中的 Robot Framework 插件。
  • Eclipse Plugin:Eclipse IDE 的 Robot Framework 插件。
  • Gedit:Gedit 的语法高亮显示。
  • Robot Plugin For Intelli IDEA:IDEA 编辑器的 Robot Framework 插件。
  • Sublime Assistant:Sublime 编辑器的 Robot Framework 插件。

5.其他工具
  • DbBot:用于将 Robot Framework 测试结果(即 output.xml 文件)序列化为 SQLite 数据库的工具。
  • Fixml:用于修复破坏的 Robot Framework 输出文件的工具。
  • Mabot:输出手工测试与 Robot Framework 兼容格式的报告工具。
  • Pabot:Robot Framework 测试用例并行执行器。
  • RFDoc:用于存储和搜索 Robot Framework 测试库和资源文件文档的 Web 系统。
  • Robot Corder:通过录制用户交互扫描 Chrome 浏览器中的 HTML 页面来生成 Robot Framework 测试脚本。相当于应用在 Robot Framework 浏览器自动化测试中的 Selenium IDE。
  • Robot Framework Hub:轻量级 Web 服务器,能通过浏览器对 Robot Framework 测试资产进行访问。
  • Robot Framework Lexer:用于 Pygments 突出显示 Robot Framework 语法。
  • Robot Tool:可以与 Robot Framework 一起使用的支持工具的集合。
  • Status Checker:验证执行 Robot Framework 测试用例时预期的状态和日志消息的工具。

Robot Framework 生态系统远不止涉及上述这些,更多的介绍可查阅官网。