一、Robot Framework框架简介
Robot Framework是一种基于Python的可扩展关键字驱动自动化测试框架,通常用于端到端的可接收测试和可接收测试驱动的开发。可以用于测试声明涉及到多种技术和接口的分布式的,异构的应用系统。
测试用例位于HTML或者TSV(以tab分隔值)文件,使用在测试库中实现的关键词来在测试中运行程序。因为Robot Framework 是灵活和可扩展的,所以它很合适用于测试具有多种接口的复杂软件:用户接口,命令行,web service,编程接口等。
模块化结构如下图所示
Robot Framework使用手册及下载地址:http://code.google.com/p/robotframework/
二、安装
Robot Framework需要Python或Jython环境,具体需要哪个环境主要是看你使用的Test Libraries或是Test Tools的需要。
1. 安装Python或Jython;
2. 安装Robot Framework:
- Windows:可直接下载安装程序安装,安装完成后在系统环境变量中的Path变量中新增C:\Python27\Scripts,C:\Python27为本机Python安装路径;
- Linux:下载robotframework-2.6.3.tar.gz并解压,然后进入解压目录并执行安装命令:python setup.py install
- 验证安装是否成功,执行命令:pybot --version
3. 安装扩展库,如果需要的话。
三、Robot Framework基础
1. 变量
变量是 Robot Framework的完整特征,它们能在测试数据的大多数地方被使用。最常见的是,在测试用例表和关键字表中被用于关键字的参数,但是所有设置的值中都允许使用变量。一个普通的关键字名称不能使用变量来指定,但使用内建关键字Run Keyword 可以获得这种效果.
- 标量:语法${scalar}。当在测试数据中使用标量变量时,他们将被分配的值所代替。
- 列表变量:语法@{LIST}。列表变量是复合变量,可以分配多个值给它。
- 内建变量:
- 操作系统相关的变量
- 数字变量:变量语法可以用来创建一个全是整型和浮点型的数字:整形${80}、浮点型 ${3.14}
- Boolean变量:${true/false}
- Null/None变量: ${null/None}
- 空格${SPACE}和空${EMPTY}变量
2. 测试文件语法
1. 测试用例的组织层次结构:
- 在测试用例文件(test case file)中建立测试用例;
- 一个测试文件自动的建成一个包含了这些测试用例的测试集(test suite);
- 一个包含多个测试用例文件(test case file)的目录构成更高级别的测试集;
- 一个测试集目录可以包含其他测试集目录
此外,还有:
- 测试库(Test libraries)包含最低级别的关键字
- 资源文件(Resource files)包含变量和更高层次的用户自定义关键字
- 变量文件(Variable files)可以提供比资源文件更灵活的方式创建变量
3. 支持的文件格式
测试数据被定义为表格形式,无论是使用超文本标记语言(HTML),制表符分隔值(TSV),纯文字,或 reStructuredText格式。Robot Framework通过文件扩展名为其选择一个测试数据解释器。只为HTML和TSV 两种文件格式提供了模板。
HTML文件模板:
TSV文件模板:
4. 测试数据表格
测试数据被组织在以下四种表格中。这些测试数据表格通过表格的第一个单元格被识别,下列表格的最后一列列出了可以做为表名称使用的不同别名。
在一个测试文件中,Setting与Test Case是必须要有的。
Table name | Used for | Aliases |
Setting table | 1.导入测试库,资源文件和变量文件 2. 为测试集和测试用例定义元数据 |
Setting Settings Metadata |
Variable table |
定义可以用在其他地方的测试数据的变量 | Variable Variables |
Test case table | 通过可用的关键字创建测试用例。 | Test case Test cases |
Keyword table |
通过低级别关键字创建用户自定义关键字 |
Keyword Keywords User Keyword User Keywords |
四. 创建测试用例实例
下面以官网自带例子(Quick Start Guide)说明如何创建测试用例,测试文件使用HTML格式,为理解及设计方便,将以下各表放在一个html文件中。
1. 首先编写Setting table
Setting | Value | Comment |
Library | OperatingSystem | |
Library | testlibs/LoginLibrary.py | #导入用户自定义库 |
Test Setup | Clear Login Database | #每个测试用例执行时会先执行setup |
Test Teardown | #每个测试用例执行完后会执行teardown |
2. 编写测试用例
Test Case | Action | Argument | Argument | Argument |
User can create an account and log in | Create Valid User | fred | P4ssw0rd | #关键字驱动,即:调用keyword表中的同名关键字 |
Login | fred | P4ssw0rd | ||
Creating user with invalid password should fail | [Template] | Creating user with invalid password | #加上[Template]后则关键字驱动变为数据驱动 | |
abCD5 | ${PWD INVALID LENGTH} | |||
abCD567890123 | ${PWD INVALID LENGTH} |
3. 使用关键字
Keyword | Action | Argument | Argument | Argument |
Clear Login Database | Remove file | ${DATABASE FILE} | ||
Create Valid User | [Arguments] | ${username} | ${password} | #定义关键字可以理解为定义函数实现 |
Create user | ${username} | ${password} | #Create User为LoginLibrary.py中定义的关键字,robot Framework会忽略下划线 | |
Status should be | SUCCESS | #同上 | ||
Login | [Arguments] | ${username} | ${password} | |
Attempt to login with credentials | ${username} | ${password} | #同上 | |
Status Should Be | Logged In | |||
Creating user with invalid password | [Arguments] | ${password} | ${error} | |
Create user | username | ${password} | ||
Status should be | Creating user failed: ${error} | |||
4. 使用变量
Variable | Value |
${DATABASE FILE} | ${TEMPDIR}${/}robotframework-quickstart-db.txt |
${PWD INVALID LENGTH} | Password must be 7-12 characters long |
5. 自定义关键字返回值
用户关键字也可以返回值,返回值使用[Return]定义。该值可以赋给测试用例中的变量或其他关键字。
Test Case | Action | Argument | Argument |
One return value | ${return} = | Return one value | |
Should Be Equal | ${return} | one | |
Two return values | @{list}= | Return two values | |
${first} | ${second} = | Return two values | |
Keyword | Action | Argument | Argument |
Return one value | [Return] | one | |
Return two values | [Return] | one | two |
五. 测试用例的执行
测试用例完成后,就该是执行了,这非常简单:打开命令窗口,进入测试集所在目录,然后输入命令:pybot XXX.html即可。
当目录下有多个测试文件时,直接输入测试文件所在的目录名,则所有测试文件都会执行,且每个测试文件作为一个测试集,这在测试报告中有所体现。
六、测试库
1. 八个标准库,可以直接导入使用。
2. 扩展库,需要下载安装后才能使用。
- SeleniumLibrary :web方面测试的扩展库
- SwingLibrary:
3. 用户自定义的Test Library库文件
这个库文件是将待测程序的所有接口函数提出来,使用python写的一个Library文件。需要一定的编程基础才能很好的写出测试所需的接口库函数。
七、其它
在一个测试集中,可能包含多个测试文件,为重用关键字及变量,可以将关键字及变量单独生成文件,然后在测试文件的setting中导入资源文件即可。
Setting | Value |
Resource | Variable.html |
Resource | keyword.html |
转:http://www.360doc.com/content/11/1230/10/54470_176015885.shtml