Robot Framework 介绍

时间:2024-03-15 09:43:56

本文的主要目的是简要地介绍Robot Framework功能和特性,更加详细的内容,请移步至官网http://robotframework.org/ (官网的内容最为全面详细,由英文编写)。


本文分为下列小节作为讲解,

1. Robot Framework的特性;

2. Robot Framework的架构;

3. 如何安装编译环境 (以Ubuntu为例);

4. 示例1:Hello World;

5. 示例2:robotframework-webdemo

6. Robot Framework其他特性;


一. Robot Framework的特性

Robot Framework是为“测试”而生,他的目标人群是测试工程师,它的目标和使命注定了Robot Framework必须要简单/简介/亲民/易懂,而这些Robot Framework都做到了,这使得Robot Framework推出之后,得以快速发展传播。

Robot Framework最重要特性之一是“Keyword-driven”(关键字驱动),keyword类似其他高级语言的函数,使得代码结构化和重复利用。

Robot Framework不仅适用于常规的测试模式,也适用于ATDD(acceptance test-driver development) (各个相关团队协作开发模式,比如软件团队/测试团队/项目管理团队等),所以适用十分广泛。

Robot Framework是使用Python语言开发,它也可以运行在Jython(JVM)和IronPython(.NET)上。开发者可以用Python或者Java来更改和扩展Robot Framework,其他语言则可以通过Remote interface来进行扩展。

Robot Framework最早是有Nokia开发,后来开源供其它所有人共享。目前官方代码放在Github上,采用Apache 2 license。

Robot Framework有自己的活跃的社区,来自世界各地的程序员一直默默地为其发展做出卓越的贡献。

当然,Robot Framework还有其他很多特性,大家在学习和使用过程中再慢慢体会。


二。Robot Framework的架构

Robot Framework是一个通用的测试框架,它的丰富的功能特性来自于library扩充,这些library一部分是Robot Framework自带的,另外还有很多是第三方开发扩充的。对于大多数程序员或软件测试工程师,只需要调用已有的library就可以编写自己的use case了,这些use case对framework而言是“Test Data”。

测试程序的执行,是先从Robot Framework解析Test Data开始,然后根据library或者tools提供的Keyword与被测试系统互动。测试完成后,会产生report/log(HTML格式)和output(xml格式)。

其构成的结构模块如下图所示。


Robot Framework 介绍


三。安装编译环境 (以Ubuntu为例)

Robot Framework为解释性语言,并非编译性语言(如C需要compile/link,则属于编译性语言),请区分。

安装环境是在Ubuntu 16.04测试,其他版本的Ubuntu可以参照下面的步骤;Windows用户可以参照官网的指导(https://github.com/robotframework/robotframework/blob/master/INSTALL.rst)。

注:Ubuntu默认已经安装Python,所以无需再额外安装Python.

1. 安装pip,pip类似RedHat中的yum,安装Python包十分方便。
    $ sudo apt install python-pip
2. 安装 "robot framework" 和 "robotframework-ride“,robotframework-ride是编辑调试robotframework的IDE环境。
    $ sudo pip install robotframework
    $ sudo pip install robotframework-ride
3. Install wxPython 2.8 (robotframework-ride要求只能使用wxPython 2.8,其他版本不可以;Ubuntu 16.04默认是wxPython 3.0,可以采用下面的特殊步骤安装)
    $ echo "deb http://archive.ubuntu.com/ubuntu wily main universe" | sudo tee /etc/apt/sources.list.d/wily-copies.list
    $ sudo apt update
    $ sudo apt install python-wxgtk2.8
    $ sudo rm /etc/apt/sources.list.d/wily-copies.list
    $ sudo apt update
4. 运行 RIDE,如下图所示
    $ ride.py

Robot Framework 介绍


四。示例1:Hello World

以前,程序员们的第一个程序都是从Hello World开始;今天,我们依旧从Hello World起航。

点击"New Project",在弹出的对话框“Name”栏位中填入“Demo Test”,然后点击“OK”按钮关闭对话框;

选中“Demo Test”,右击鼠标选择“New Test Case”, 在弹出的对话框“Name”栏位中填入“HelloWorld”,然后点击“OK”按钮关闭对话框。

在右侧的“Edit” 页面下,可以看到表格,在表格第一行的第一列输入“log”,第二列输入“Hello World”,至此编码完成,怎么样,感觉耳目一新吧!

具体页面见下图。

Robot Framework 介绍


点击“Text Edit”,页面如下,代码简洁吧!

Robot Framework 介绍


点击“F8”运行,运行结果的界面如下,可以看到我们刚才输入的“log Hello World”已经打印出来了。

测试结果是1 passed,0 failed;测试结果output/日志log/报告report也已经生成,分别放在了/tmp/RIDETZORHc.d的临时目录下。

Robot Framework 介绍


我们先来看看output.xml, output采用XML格式,很容易被其他程序识别和读取,可以供进一步分析和解析。

Robot Framework 介绍


Report.html采用表格格式,可读性十分好,清晰明了,把测试项目/结果/所花时间等关键信息都列了出来。

Robot Framework 介绍


Log文件则详细列出测试的每一步执行情况,供测试工程师分析fail在哪一个步骤。

Robot Framework 介绍


看到这边,相信大家都Framework已经有一个印象了:编程简单,测试结果/报告/日志自动生成,真是测试的利器呀。


五. 示例2:robotframework-webdemo

webdemo测试是robotframework经典的demo案例,这个案例向我们展示了Robot Framework强大的功能。

webdemo的介绍,请参考网站 https://bitbucket.org/robotframework/webdemo。

运行webdemo,需要安装Selenium2Library, 安装命令:pip install robotframework-selenium2library

如果测试的是Chrome,则还需要下载Chrome的插件,官方下载是从google网站上下载,因为国内无法访问google,可以从镜像网站下载:https://npm.taobao.org/mirrors/chromedriver

webdemo基于Selenium2Library,是一个简单的登入页面,如果用户输入正确的用户名“demo”和密码“demo”,则会进入欢迎页面,否则会进入错误页面。

登入页面如下所示,

Robot Framework 介绍


下面展示了Robot Framework "Keyword driven"特性,

"Valid Login"是测试用例名,下面绿色字体每一行都是一个“Keyword” (keyword之间可以有空格,这不同于高级语言如C,C的函数名称不能有空格),棕色字体是输入参数,“Teardown”是指在这个测试用例结束时要执行的动作。

Keyword特性使得代码的可读性进一步增强。

Robot Framework 介绍


下面展示的是Robot Framework “Data Driven”特性。

我们这里不具体讲它是如何实现,只是讲他的特性,具体实现可以参阅代码。

“Data Driven”特性,使得我们反复的测试一下子变得简单了,只要摆好要测试的参数,就会按照“Test Template”的模板输入数据进行运行,这一点好似C语言的函数中塞进一个测试数据列表,但语言结构比C要直观多了。

Robot Framework 介绍


下面的示例展示了Robot Framework十分“亲民化”语言风格,

以程序员的角度来看的话,会先懵一下,然后再把这个“亲民化”的自然语言转成 IF (XXX == TRUE) THEN xxx

哈哈,在Robot Framework眼中,程序员有点异样。

Robot Framework 介绍


接着,我们在看看变量的使用,如下,

定义变量十分简单哈,是不是?

如果我们通过命令行改变默认的变量内容,以“BROWSER”为例,可以在命令行中加入“--variable BROWSER:Chrome” 即可。

Robot Framework 介绍


六。Robot Framework其他特性

我们最后再唠叨几个其他Robot Framework的特性,

1. Tag 标签

标签可以对事物分门别类,用到Robot Framework也起到类似的作用。

比如,可以选择执行某种Tag的测试用例;或者只统计某种Tag的测试用例结果;或者是把某些Tag的测试用例列为critical,等等。。。

2. 丰富的library

包含自带的library,这些library在安装Robot Framework时候已经安装,如 OperatingSystem, Screenshot, String, Telnet, XML, …

还有第三方的library, 这些library需要单独安装,如 Selenium2Library, SwingLibrary, DatabaseLibrary, AutoItLibrary, SSHLibrary, HTTPLibrary, …

另外,还有开发团队自己开发的library。

3. 编辑器

RIDE是主要的编辑器之一;

另外还有很多Robot Framework编辑器的插件,如 Eclipse, IntelliJ/PyCharm, SubLime, TextMate, Vim, Emacs, Brackets, Atom, ...

4. 方便集成

如 

a. 可以和 Jenkins/Ant/Maven集成到一起;Jenkins和Robot Framework的集成会单独讲解;

b. Output产生的结果是XML格式,这样方便其他工具读取,并作整合;

c. 可以采用命令行执行,方便整合到其他工具中;

d. 代码以text文件保存,可以使用SVN或者Git工具进行代码管理。


至此,Robot Framework的基本特性都有浅浅的介绍,要想进一步深入,建议,

1. 阅读Robot Framework官网;

2. 多做Robot Framework相关的项目,熟能生巧;


文末列出最近整理的Robot Framework相关的文章,

1.Robot Framework 介绍 

2.Robot Framework + Appium测试Android设备 

3. Robot Framework如何向Android发送keycode键盘事件 

4.Robot Framework如何判断Android屏幕是否含有某个控件 

5.Robot Framework如何等待Android屏幕中的某个控件出现 

6.Robot Framework如何在Android中实现滚屏

7.Robot Framework如何对Android的控件定位

8.Robot Framework+Appium案例分享一: 验证版本信息

9.Robot Framework+Appium案例分享二: Camera测试

10.Robot Framework+Appium案例分享三: WiFi测试

11.Robot Framework+Appium案例分享四: Bluetooth测试

12.RobotFramework AppiumLibrary 用户关键字