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会弹出如下测试日志和测试报告,如下图测试日志所示:
测试报告: