RobotFramework简介(架构+标准库)

这篇文章是我在学习Robot框架过程中所总结的,主要简单介绍了Robot Framework的基础架构和标准库知识。要想学好Robot并且少走弯路,了解这些基础知识我认为是很有必要的,因为它可以给你一个大致的入门思路和学习方向,让你不至于迷茫到底该从哪里下手学习RF。

RobotFramework 官网
PyPI
GitHub
Robot Framework User Guide

Intro

Robot Framework is a Python-based keyword-driven test automation framework for acceptance level testing and acceptance test-driven development (ATDD). It has an easy-to-use tabular syntax for creating test cases and its testing capabilities can be extended by test libraries implemented either with Python or Java. Users can also create new higher level keywords from existing ones using the same simple syntax that is used for creating test cases.

Robot Framework是一个基于Python并且是关键字驱动的开源自动化测试框架,主要用于验收级别测试和验收测试驱动开发(ATDD)。它有一个易于使用的表格语法,用于创建测试用例,它的测试功能可以通过用Python或Java实现的测试库来扩展。用户还可以使用与创建用例时相似的简单语法,来从现有的关键字中创建新的更高级别的关键字。

Why Robot Framework ?

Copy From Robot Framework User Guide

  • Enables easy-to-use tabular syntax for creating test cases in a uniform way;
    支持易于使用的表格语法,并以统一的方式创建测试用例;
  • Provides ability to create reusable higher-level keywords from the existing keywords;
    提供从已有的关键字来封装可重用的高级关键字的能力;
  • Provides easy-to-read result reports and logs in HTML format;
    结果报告和日志以HTML格式提供,简单易读;
  • Is platform and application independent;
    平台和应用程序相互独立;
  • Provides a simple library API for creating customized test libraries which can be implemented natively with either Python or Java ;
    提供一个简单的 API来定制测试库,可以用Python或Java实现;
  • Provides a command line interface and XML based output files for integration into existing build infrastructure (continuous integration systems);
    为集成到现有的持续集成系统(CI) 提供一个命令行接口和基于XML的输出文件;
  • Provides support for Selenium for web testing, Java GUI testing, running processes, Telnet, SSH, and so on;
    为web测试、Java GUI测试、运行流程、Telnet、SSH等提供支持;
  • Supports creating data-driven test cases;
    支持创建数据驱动的测试用例;
  • Has built-in support for variables, practical particularly for testing in different environments;
    有内置支持变量,支持在不同的环境中进行测试;
  • Provides tagging to categorize and select test cases to be executed;
    以tag进行标记分类测试用例和选择执行;
  • Enables easy integration with source control: test suites are just files and directories that can be versioned with the production code;
    易于和版本控制系统集成,测试套件是文件和目录,可以与代码一同进行版本控制;
  • Provides test-case and test-suite -level setup and teardown;
    提供测试用例和测试套件水平的 setup 和 teardown ;
  • The modular architecture supports creating tests even for applications with several diverse interfaces;
    模块化结构支持使用不同的接口来测试不同的应用;

Usage

Starting from Robot Framework 3.0, tests are executed from the command line using the robot script or by executing the robot module directly like python -m robot or jython -m robot. Older Robot Framework versions have Python interpreter specific pybot, jybot and ipybot scripts that still work but will be deprecated and removed in the future

目前Robot框架最新版本为3.0.4,从3.0版本开始,通过使用robot脚本或是执行robot模块,比如python -m robotjybot -m robot的方式来从命令行执行测试。旧版本的Robot框架有特定于Python解释器的pybot、jybot和ipybot脚本,这些脚本仍然可以工作,但将来会被弃用和删除。

RobotFramework简介(架构+标准库)

三个脚本的内容如下:

#pybot.bat
@echo off
python -m robot.run %*

#robot.bat 
@echo off
c:\python36\python.exe -m robot.run %*

# rebot.bat
@echo off
c:\python36\python.exe -m robot.rebot %*

基础用法:robot [OPTINOS] [PATH],如:

robot tests.robot`
`robot --variable HOST:example.com --outputdir results path/to/tests/

此外,rebot工具可以组合结果和其他后处理输出:

rebot --name Example output1.xml output2.xml

运行robot --helprebot --help,可以获得关于命令行用法的更多信息。

RobotFramework 架构

Robot Framework is a generic, application and technology independent framework. It has a highly modular architecture illustrated in the diagram below.

机器人框架是一个通用的、应用和技术的独立框架。它有一个高度模块化的架构,如下图所示。


RobotFramework简介(架构+标准库)
Robot Framework architecture

如果需要用一句话来形容下RobotFramework 可以做哪些事情的话,下面这句话或许很恰当:

The core framework does not know everything about the target under test,and the interactiuon with it is handled by test libraries.

RobotFramework 库介绍

RF的库分为标准库(standard library)和扩展库(external library)。
对于标准库,这些库是直接绑定在RF内的,在
..\Python27\Lib\site-packages\robot\libraries
下可以看到,无须再下载;而外部库,是需要根据个人需要,下载后再安装导入才能使用的。 对于标准库,又分两类,类似BuiltIn库是RF自动加载到内存的,安装后按下F5就能直接使用,不需要再次import,而XML库需要再次import才能正常使用。因为BuiltIn Library 提供了很多常用的关键字,比如Sleep, Log, Evaluate等,所以RF就把这个常用的库自动加载到了内存。

RobotFramework简介(架构+标准库)
standard library

官网上标出的11个标准库在这里都能找到对应的.py文件。

RobotFramework简介(架构+标准库)
image.png

不同的RF版本,相同的标准库之间也可能会有细微的差别,以下以 the latest version:v3.0.2 ,概括介绍下这几个标准库的作用。

Reference From Robot Framework documentation

  • BuiltIn : 自动导入,它包含一些非常常用的关键字,如Log、Set Variable、Evaluate、Sleep 、Comment、Should Be Equal...
  • Collections : 处理操作List 和 Dictionary;
  • DateTime : 支持创建和验证日期/时间值以及它们之间的计算;
  • Dialogs : 支持暂停测试执行并从用户那里获得输入;
  • OperatingSystem : 支持执行各种操作系统相关的任务;
  • Process : 支持系统中的执行进程;
  • Screenshot : 捕获和存储截图;
  • String : 处理操作字符串;
  • Telnet : 支持连接到Telnet 服务器上打开的连接执行命令;
  • XML : 验证和修改XML文档;
  • Remote : 部分远程库接口,它没有关键字.
    />>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    end.
上一篇:调查显示存储虚拟化技术尚需3到5年才能成熟


下一篇:Docker搭建Robot Framework环境