目录
一、RF安装
1.1 Ride安装
- 安装Python2.7,配置好环境变量
- 安装wxPython 2.8.12.1 (目前只有这个版本是官方支持的),一键式安装
- 安装ride,下载安装包后,解压后使用python setup.py install安装
- 安装RF,下载安装包后,解压使用python setup.py install安装
- 安装完成后,在scripts文件夹下,使用python ride.py即可运行
1.2 eclipse安装
- 安装eclipse、python2.7,配置好环境变量
- 配置python编译器(这一步可以不用配置)
- 下载PyDev(下载地址)。将下载文件解压,将features和plugins中的文件分别拷贝至eclipse安装目录下的features和plugins目录下。
- 打开eclipse,选择windows->references->PyDev,选择本地的python2.7.exe
- 配置eclipse应用于RF的插件(这一步也可以不用配置)
-
安装RED插件(有两种方法)
-
打开eclipse,选择Help->Install New SoftWare->Add,在弹出窗口中Name填写:RobotFramework-EclipseIDE,URL填写:http://master.dl.sourceforge.net/project/red-robot-editor/repository,点击ok,后根据提示操作,安装完成后重启eclipse
-
下载RED_feature,打开ECLIPSE,选择Help->Install New SoftWare->Add,点击弹出框的Archive...按钮,选择本地下载好的RED的zip包,安装完成后重启即可
注意:重启后eclipse显示的是java视图,为方便后续操作,须将其更改为robot视图,修改方法为:Windows->Perspective->Open Perspective->Other。在弹出窗口选择Robot
-
-
选择windows->references->Editors->File Associations,在File types选择*.txt,在Associated editors选择RobotFramework-EclipseIDE,点击Associated editors的default,设置txt默认打开方式为RobotFramework-EclipseIDE
-
任意创建一个txt格式的文件,默认的编辑器均为RobotFramework-EclipseIDE
-
- 安装RF:pip install RobotFramework
- eclipse其他设置
- 编码设置:indows->references->workspace,在Text file encoding中选择utf-8
- 自动提示设置:windows - preference - RobotFramework - Editor - Content Assitant
加上如下内容:.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$@&*:[
二、RF简介
RF全称Robot Framework,是一款python编写的功能自动化框架。具备良好的可扩展性、支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。
2.1 Robot Framework特点
- 开源,基于Python2.7开发(暂时不支持python3)
- 具有丰富的第三方库,支持UI、API、IOS以及Android
- 编写用例简单、方便,可以用txt,tsv或者html等格式编写用例
- 支持关键字驱动,数据驱动和行为驱动
- 利用已有关键字,测试人员可以创建自己的关键字,形成更高级的行为
- 可以像编程一样写测试用例、支持变量使用、可以使用IF语句和FOR循环语句
- 支持集成svn、git以及jenkins等工具
- 灵活、可扩展(可自己扩展测试库)
2.2 RF中四大组件
在RF中,比较常用的有Settings、Variables、Keywords和Test Cases。这其中每一个部分都有各自的作用:
2.2.1 *** Settings ***
- 包括导入库(Library)、导入资源(Resource)、导入变量(Variables)文件、设置setup和teardown等。RF导入第三方库写在*** Settings ***下,案例如下:
2.2.2.1 Librarys
库: 相当于python中的模块,是系统关键字的集合。可以分为RF标准库、第三方库和自定义库。
*** Settings ***
Library SeleniumLibrary
RF标准库 | 第三方库 | 自定义库
- | - | -
这类库不需要安装,直接导入就可以使用 | 需要anzhuangku以及依赖库,需要导入之后才能使用关键字 | 需要先开发python模块及其函数,之后安装导入后才能使用该关键字
① RF标准库
- Builtin: 包含经常需要的关键字。自动导入,无序import
- Dialogs: 提供了暂停测试执行和从用户的输入方式
- Collections: 提供一组关键词处理Python列表和字典
- OperatingSystem: 允许执行各种操作系统相关的任务。允许执行各种操作系统相关的任务,是各种操作系统相关的任务在RF正在运行的系统中执行
- Remote: 远程接口的一部分。没有自己的任何关键字,作为RF和测试库之间的代理,实际测试库可以在不同的机器上运行,可以使用任何编程语言支持XML-RPC协议的实现
- Screenshot: 提供关键字捕获 和存储桌面的截图
- String: 用于处理字符串并验证他们内容的库,用于生成、修改和验证字符串
- Telnet: 支持链接到Telnet服务器上打开的连接执行命令
- XML: 用于生成、修改和验证XML文件的库
- Process: 系统中运行过程的库
- Date Time: 日期和时间转换的库,支持创建和验证日期和时间值以及他们之间的计算
② 第三方库
- web自动化库: SeleniumLibrary、Selenium2Library、Selenium2Library for Java、waitir-robot等
- windows GUI测试: AutoltLibrary
- 移动测试: Android library、IOS library、Appium library等
- 数据库测试: Database Library(Java)、Database Library(Python)、MongoDB library等
- 文件对比测试: Diff Library
- HTTP测试: HTTP library(invest)、HTTP library(Requests)等
2.2.1.2 Resources
- 用户关键字的集合,用来对用户关键字进行管理,相当于用户用python自己编写的类
登录首页关键字
*** Settings ***
Library SeleniumLibrary
*** Variables ***
${用户名输入框} //*[@id="loginname"]
${密码输入框} //*[@id="pl_login_form"]/div/div[3]/div[2]/div/input
${登陆按钮} //*[@id="pl_login_form"]/div/div[3]/div[6]/a
${登陆失败-提示信息框-非中间} //*[@id="layer_15254979692111"]/div/p
${登陆成功页面元素} //*[@id="v6_pl_rightmod_myinfo"]/div/div/div[2]/div/a[1]
*** Keywords ***
登陆
[Arguments] ${url} ${username} ${pwd}
SeleniumLibrary.Open Browser ${url} chrome
BuiltIn.Comment comBuiltIn.Sleep 10
SeleniumLibrary.Maximize Browser Window
SeleniumLibrary.Wait Until Element Is Visible ${用户名输入框} 50
SeleniumLibrary.Input Text ${用户名输入框} ${username}
SeleniumLibrary.Input Text ${密码输入框} ${pwd}
SeleniumLibrary.Click Element ${登陆按钮}
SeleniumLibrary.Wait Until Element Is Visible ${登陆成功页面元素} 50
测试用例中调用登录首页关键字
*** Settings ***
Library SeleniumLibrary
Resource ../用户关键字/登陆页面.robot
Resource ../测试数据/登录测试数据.robot
Force Tags login
Test Teardown SeleniumLibrary.Close Browser
*** Test Cases ***
登陆新浪微博——成功用例
[Tags] smoke
登陆页面.登陆 ${测试环境地址} ${正确的登录名} ${正确的密码}
2.2.1.3 Variables
- 导入变量,可以是RF中定义的变量文件,也可以是python中定义好的变量
2.3.6 TestCases/TestSuite
2.2.2 *** Variables ***
- RF中自定义变量都在Variables下定义,案例如下:
*** Variables ***
${用户名输入框} //*[@id="loginname"]
${密码输入框} //*[@id="pl_login_form"]/div/div[3]/div[2]/div/input
${登陆按钮} //*[@id="pl_login_form"]/div/div[3]/div[6]/a
2.2.3 *** Keywords ***
- 提供特定功能的函数,包括系统关键字和用户关键字。关键字中的空格就是函数名称中的下划线。查找关键字可以按F5或者点击菜单栏为"K"的按钮。使用关键字时,如果显示关键字为蓝色,表示关键字存在并且可以正常使用,如果关键字为黑色,表示关键字不能正常使用
*** Keywords ***
登陆
[Arguments] ${url} ${username} ${pwd}
SeleniumLibrary.Open Browser ${url} chrome
SeleniumLibrary.Wait Until Element Is Visible ${用户名输入框}
SeleniumLibrary.Input Text ${用户名输入框} ${username}
SeleniumLibrary.Input Text ${密码输入框} ${pwd}
SeleniumLibrary.Click Element ${登陆按钮}
2.2.4 *** Test Cases ***
- RF中用户的测试用例都放在Test Case中
*** Test Cases ***
登陆新浪微博——成功用例
[Tags] smoke
登陆页面.登陆 ${测试环境地址} ${正确的登录名} ${正确的密码}
2.3 RF常见标识
- [Arguments] :参数
- [Return] :返回值
- [Documents]:关键字说明
- [Tag]:用例标签
- [Setup]:用例标签
- [Teardown]:用例标签