Robot Framework介绍

Robot Framework是一个通用的关键字驱动自动化测试框架。测试用例以HTML,纯文本或TSV(制表符分隔的一系列值)文件存储。通过测试库中实现的关键字驱动被测软件。    Robot Framework灵活且易于扩展。它非常适合测试有不同接口的复杂软件:用户接口、命令行,Web服务,专有的编程接口等。
 Robot Framework是开源软件,通用的测试库源码安装包和文档等可通过http://robotframework.org获取。Robot Framework 是一种通用的,应用和技术相互独立的框架。

当我们想要完成 不同类型测试时,只需安装不同的扩展库即可,框架提供了非常丰富的Library。

  • Web自动化测试:SeleniumLibrary、Selenium2Library、Selenium2Library for Java等。
  • Windows GuiI测试:AutoItLibrary
  • 移动测试:Android library、ios library、AppiumLibrary等
  • 数据库测试:Database Library(Java)、Database Library(Python)、MongoDB library等。
  • 文件对比测试:Diff Library
  • HTTP测试:HTTP library(livetest)、HTTP library(Requests)等。

如下图所示的模块化结构:

测试数据以一种简单易于编辑的表格格式。当 Robot Framework 启动的时候,启动测试数据,执行测试用例,并且生成日志和报告。核心框架句柄与被测系统通过测试库进行交互。测试库能够直接使用应用程序接口或者使用更低层次的测试工具作为驱动。

Robot Framework框架环境搭建

目前Robot Framework支持wxpython3.x及python3.x版本,本文针对wxpython2.x版本及python2.7版本部署。

Robot Framework框架所需软件包清单如下:

1、python:【ActivePython-2.7.8.10-win32-x86.msi】

推荐使用ActivePython,这个版本PATH已经配好了。

http://www.activestate.com/activepython/downloads 【建议下载python2.7的x86版本】

验证安装是否成功:

进入cmd窗口命令下,输入python是否能进入python编辑器。

2、wxPython 【wxPython2.8-win32-unicode-2.8.12.1-py27】

http://sourceforge.net/projects/wxpython/files/wxPython/2.8.12.1/

【建议下载支持py2.7的unicode版本,否则不兼容robot的ride】

安装按默认方法进行即可。

3、Robot framework  【robotframework-2.8.7.tar.gz】

https://pypi.python.org/pypi/robotframework/2.8.7

先解压后,执行python setup.py install安装

4、Robot framework-ride 【robotframework-ride-1.4.tar.gz】

https://pypi.python.org/pypi/robotframework-ride

先解压后,执行python setup.py install安装

备注:目前1.4版本暂时没有exe二进制安装包,如果选择ride-1.3版本,是有exe的安装包,此包安装完后会在桌面生成应用程序图标,运行RIDE平台方便些。

5、Robot framework-selenium2library:【robotframework-selenium2library-1.7.1.zip】

【web方向的扩展测试库】——可自选安装。

https://pypi.python.org/pypi/robotframework-selenium2library

或者:http://robotframework.org获取下载。

RF-seleniumlibrary 可以看做RF版的selenium 库,selenium (webdriver)是一套基于web的规范(API),所以可以基于这套API进行页面的定位与操作。

注意:如需要安装第三方selenium2library测试库,先按顺序安装依赖库包,如下:

1、Decorator  【decorator-3.4.2】

2、Selenium   【selenium-2.46.0】

3、Docutils   【docutils-0.12】

以上依赖库包,可从https://pypi.python.org/pypi

4、selenium2library 【robotframework-selenium2library-1.7.1.zip】

下载后,执行python setup.py install安装完后,进入C:\Python27\Lib\site-packages\robotframework_selenium2library-1.7.1-py2.7.egg\EGG-INFO\requires.txt查看是否已有安装所需的库包,如下:

decorator >= 3.3.2

selenium >= 2.32.0

robotframework >= 2.6.0

docutils >= 0.8.1

以上库包都已有安装好,后面数字说明需要大于等于版本号的库包。

验证robot安装是否成功,如:pybot --version

到这里为止,框架已安装好,可在C:\Python27\Lib\site-packages\robot\libraries看到自带的标准测试库,是随Robot Framework 一起发布的,这些库被叫做标准库,以下是一些可用的标准库:

1、Builtln
2、OperatingSystem
3、Telnet
4、Collections
5、String
6、Dialogs
7、Screenshot
8、Remote
9、XML
10、Reserved
11、Process
12、DateTime

Robot的实际测试能力是由测试库提供的,不同的测试库提供了功能各异的库关键字,以满足不同的用例需求。

其它方面的测试库可从http://robotframework.org/#test-libraries获取,如果根据公司内部需求实现自动化检测被测产品,有些第三方开源的测试库无法满足达到被测产品自动化,需要自行定制扩展测试库开发。

总体上开源的测试框架有提供开放的源代码,可以自行整合框架梳理源代码目录结构形成独立的工具包。

如果需要使用Java开发扩展测试类库,需要安装Jython

1)安装JDK1.6

2) 安装Jython     http://www.jython.org/downloads.html 【选择2.5以上版本】

进入命令行模式下,进入下载好的jar包目录下运行指令:

java -jar jython_installer-2.5.2jar

验证安装是否成功:

jybot --version

进入C:\Python27\Scripts运行ride.py文件,可弹出平台界面,如下:

可支持浏览器分别为:IE、firefox、chrome、Opera

其中如果要支持运行IE和chrome浏览器,还需要下载驱动文件来支持。

如:chromedriver.exe和IEDriverServer.exe

将chromedriver.exe和IEDriverServer.exe放在C:\Python27或者C:\Python27\Scripts目录下(因为这两个目录已经添加到系统环境变量里面了)

火狐不需要装driverserver;脚本中浏览器参数不填写时默认为火狐。接下来在IE浏览器还需要去掉安全选项的勾选,如下图所示:

Robot Framework框架用例脚本设计方法

Robot Framework框架中,一般将测试层分为三层:Test Project、TestSuit、Test Case。本文按照三层总结以往工作用到的常见的关键字驱动和数据驱动用例脚本分层设计。

一、关键字驱动

关键字驱动:关键字以及相关参数构成,最常用的一种模式。测试用例可以描述成各种的业务工作流,这样的工作流可以用关键字驱动或者行为驱动方式来编写。

如下图所示,采用测试用例模块化设计,OS是一级模块,Test是二级模块,在Test二模块下设置测试用例Run,Resources_valable.html作为OS模块的公有资源变量;登录也可作为独立模块,登录模块下有两个用测试用例;Resources目录作为全局的公有资源文件,该资源文件下有全局资源文件和全局资源变量文件,这些全局资源文件能提供给所有模块用例调用接口。

举例:

首先,要给Test二级模块加载测试库和资源文件,这样方便测试脚本能调用测试库的关键字以及变量参数传递。如果不加载的话,执行会失败,测试脚本的关键字会变黑色字体,加载后,输入的测试脚本关键字才会变为蓝色字体。

在Resources_variable.html文件创建变量,如下图所示:

脚本设计1:

关键字:Should Exist

来源:OperatingSystem <测试库>

参数:[ path | msg=None ]

功能描述:如果参数给出的路径或文件不存在,则关键字执行失败

参数: path:可以是一个确切的路径或文件,也可以是匹配类型,类型说明详见Grep File关键字;

msg:支持用户重写报错提示信息,不配置即采用默认报错信息;

返回值:无

举例:

在拆除输入框录入如下:

以上拆除所谓的作用是脚本执行完成后,自动运行此关键字,一般用于结束。

测试用例Should Exist:脚本如下:

鼠标右击5或6选择comment表示注释,加了注释不会运行该行脚本。

脚本设计2:

比如测试界面功能,那就用到测试库Selenium2Library,比如要知道登录界面的用户名和密码输入框的元素属性,需要借助安装火狐浏览器的插件XPath和firebug来定位元素的属性。

1、给登录模块加载测试库和资源文件,如下图所示:

2、添加全局变量,如下图所示:

3、由于脚本编写会用到String、BuiltIn、Selenium2Library、OperatingSystem测试库文件的关键字及调用变量资源文件,所以给资源文件common_keywords.html加载变量文件和String、BuiltIn、Selenium2Library、OperatingSystem测试库文件,加载资源变量文件用于调用common_variable.html文件。

4、在message_common文件设置全局变量:

会把common_keywords.html文件的数值传递给message_common文件自定义的变量存储。

5、在common_keywords.html创建login用户关键字通用的登录子模块,并设计脚本和参数设置,如下图所示:

由图可知,参数是从全局变量传递过来给脚本调用。

6、用例举例实现步骤首先登录平台,然后进入菜单“设置 ”界面上修改真实姓名和情感状态、血型后点击保存等动作。

在测试用例“正常登录测试”,设置初始化变量如图所示运行用户关键字message_common,脚本编写第一行是调用公有资源文件login子模块,然后进行一步操作。

可按快捷键F8运行测试,测试结果如下:

测试LOG日志如下图所示:

测试报告如下图所示:

二、数据驱动

数据驱动方式用来编写一些带有输入数据变量的工作流。用高级别的关键字—user keyword完成测试用例,隐藏了实际的测试工作流。用于测试执行步骤相同,输入数据输出结果不同的测试用例。例如常见的登录进行异常测试,需要用到不同的数据传参。

举例:

首先,要创建Resource_keywords_OS.html资源文件,再给此文件加载OperatingSystem <测试库>,然后,在资源文件下创建OS_Diff_file关键字文件,如下图所示:

在测试用例file,测试模板输入OS_Diff_File(要对应资源文件下的文件名),颜色变为蓝色字体代表生效,否则不生效会找不到资源文件,然后录入共有四行数据。这四行数据脚本会按每行数据参数值传递过去。

测试模板就是调用资源文件OS_Diff_File用户关键字,把模板数据传递给关键字定义的参数提供调用。

脚本设计:

在用户自定义的关键字OS_Diff_File的右框参数填入encode1\encode1\encode2\encode2共四个参数,这四个参数就是对应上述图四行数据,然后在拆除框内输入关键字代表待脚本执行完后再执行删除整个目录文件。

脚本设计如下:

结果如下:

点击LOG或Report会弹出如下测试日志和测试报告,如下图测试日志所示:

测试报告:

Robot Framework测试框架用例脚本设计方法的更多相关文章

  1. Robot Framework测试框架学习笔记

    一.Robot Framework框架简介         Robot Framework是一种基于Python的可扩展关键字驱动自动化测试框架,通常用于端到端的可接收测试和可接收测试驱动的开发.可以 ...

  2. 用 Python 写 Robot Framework 测试

    Robot Framework 框架是基于 Python 语言开发的,所以,它本质上是 Python 的一个库. 1.你懂 Python 语言. 2.又想使用 Robot Framework 测试框架 ...

  3. Robot Framework自动化测试框架核心指南-如何做好自动化测试平台框架的设计

    自动化测试如果需要能高效快速的支撑软件项目的测试,项目的快速迭代以及上线,除了以上我们介绍的需要许多的Lib来支持以及需要高效的去编写自动化测试案例外,还需要一个好的自动化测试框架平台来支撑我们的自动 ...

  4. 三年磨一剑,robot framework 自动化测试框架核心指南,真正讲透robot framework自动化测试框架(笔者新书上架)。

    序 关于自动化测试的工具和框架其实有很多.自动化测试在测试IT行业中扮演着越来越重要的角色,不管是在传统的IT行业还是高速发展的互联网行业或是如今的大数据和大热的人工智能领域,都离不开测试,也更加离不 ...

  5. Robot FrameWork测试案例

    Robot FrameWork是一个自动测试框架,可到官网查看详细介绍. 安装 Robot Framework 本文中的Robot framework安装在Win7 (32 bit) 平台上. 接下来 ...

  6. Robot Framework自动化测试框架核心指南-如何使用Java编写自定义的RobotFramework Lib

    如何使用Java编写自定义的RobotFramework Lib 本文包括2个章节 1. Robot Frdamwork中如何调用java Lib库 2.使用 java编写自定义的Lib 本文作者为: ...

  7. Robot Framework自动化框架搭建的步骤

    我把自己之前搭建Robot Framework自动化测试框架的步骤整理了一下,感兴趣的同学可以参考一下.   Robot Framework自动化测试框架+ 可视化编辑工具RIDE+Selenium2 ...

  8. 基于Python3.7 Robot Framework自动化框架搭建

    一.Robot Framework 和 Selenium 的区别(面试常问) 主流自动化测试框架有Robot Framework 和 Selenium,请根据实际场景选用不同的框架,以下总结各自优缺点 ...

  9. Robot Framework自动化测试框架初探

    Robot Framework是一款python语言编写,通用的功能自动化测试框架.它使用了比较易用的表格数据语法,基于关键字驱动测试,主要用来验收测试和验收测试驱动开发(ATDD). 本文主要介绍R ...

随机推荐

  1. Google Gson用法

    the latest version is 2.8.0. If you're using Gradle, add the following line: compile 'com.google.cod ...

  2. (转)教你完全理解IO流里的 read(),read(byte[]),read(byte[],int off,int len)以及write

    背景:对于IO部分,总是感觉很虚,不能很好的理解其中的要义,其实仔细分析,掌握其中的规律,一切都会看起来十分的自然. 1 理解 1.1 从头总结 长期以来,java中的InputStream Outp ...

  3. eclipse安装activiti5.18.0工作流插件 以及安装过程中activiti插件出现的问题及解决

    转: eclipse安装activiti5.18.0工作流插件 以及安装过程中activiti插件出现的问题及解决 2017年05月04日 18:44:21 JJ_nan 阅读数:2773   版权声 ...

  4. Java入门:基础算法之检查素数

    程序提示用户输入一个数,然后检查所输入的数是否是素数. import java.util.Scanner; class PrimeCheck { public static void main(Str ...

  5. Python【操作Redis数据库】

    Redis非关系型数据库,数据存放在计算机内存中,无SQL语句.Redis中有多种数据类型,比较常用的数据类型是string类型和hash类型.平时我们使用RedisDesktopManager来对R ...

  6. Ubuntu 搭建svn服务器 ,以及常见错误解决方案

    一.安装命令: 1)以root身份登录.执行:sudo su -命令 2)执行安装命令:apt-get install subversion   二.创建项目目录 1)mkdir  /home/svn ...

  7. centos7.2 rabbitmq3.6.2源码部署

    1.安装所有依赖包yum install -y gcc ncurses ncurses-base ncurses-devel ncurses-libs ncurses-static ncurses-t ...

  8. zkw费用流模板

    理论:http://www.cnblogs.com/acha/p/6735037.html #include<cstdio> #include<cstring> #includ ...

  9. JavaScript - Scope of variables

    It's important to note, especially if you have come to JavaScript from another language, that variab ...

  10. SpringCloud (十) Hystrix Dashboard单体监控、集群监控、与消息代理结合

    一.前言 Dashboard又称为仪表盘,是用来监控项目的执行情况的,本文旨在Dashboard的使用 分别为单体监控.集群监控.与消息代理结合. 代码请戳我的github 二.快速入门 新建一个Sp ...