WIN7零起点运行Selenium2Library

步骤如下:

  1. 安装Python:下载win32的python安装包,或者到python下载页面寻找适合你操作系统的。(测试:新开命令行窗口,敲击“python”回车)
  2. 安装robotframework:到robotframework主页安装win32的2.7.4版本,或者其他版本。(测试:新开命令行窗口,敲击“pybot –version”回车)
  3. 安装easy_install(或者pip):安装适用于python2.7、win32的0.6c11版本,或者其他版本
  4. 安装Selenium2Library(参考安装文档):
    • 使用1.0.1版本的win32安装包其他版本)进行安装。或者直接用easy_install命令安装,在命令行窗口敲击如下命令:
      easy_install robotframework-selenium2library
    • 根据具体情况敲击如下命令(例如无需再安装robotframework)
      easy_install robotframework
      easy_install selenium
      easy_install decorator
      easy_install docutils
    • 测试:新开命令行窗口,敲击“python”回车,然后在python提示符下输入“import Selenium2Library” ,出现命令行即表明运行已经安装成功,否则将出现大量错误信息。
  5. 用robotframework写一个最简单的case,可以包含如下内容(可使用html文件模板写,也可以下载安装RIDE工具写):
  6. 至此,应该已经可以顺利运行该测试并通过了。
  7. 已知问题的解决方法:
    1. 显示“[ WARN ] Keyword ‘Capture Page Screenshot’ could not be run on failure: No browser is open”,遇到此问题,请打开文件浏览器至Selenium2Library的utils目录,修改其中的browsercache.py文件,将close(self)方法中的语句“browser.quit()”修改为“browser.close()”。即可解决此问题。

如下为一些截图以供参考:

【测试文件】

image

【命令行运行结果】

image

【报告文件】

image

【日志文件】

image

RobotFramework用户说明书翻译稿-2.2.1

原文地址:http://blog.sina.com.cn/s/blog_654c6ec7010102kx.html

声明:

1.此文档是和重庆同事的共同劳动成果,不是我一个人翻译的。

2.依据RobotFramework2.6.3版本翻译,由于水平有限,时间仓促,难免有错误,请大家不吝指出。

———————————————————————————————

原文链接:

http://robotframework.googlecode.com/hg/doc/userguide/RobotFrameworkUserGuide.html?r=2.6.3#id314

———————————————————————————————–

翻译部分:

2.2.1 测试用例语法

基本语法

测试用例是由测试用例表中有效的关键字构成的。关键字可以从测试函数库或资源文件中导入,也可以在测试用例文件中的关键字表里创建。

测试用例表的第一列为测试用例名。一个测试用例是从某一用例名开始直到下一个用例名出现或者表格已到末端为止的。表头和第一个测试用例之间不能存在任何东西,否则将被认为是错误的。

第二列通常存放的是关键字名。但存在一种特例即:存在变量接收关键字的返回值,当有一个变量或者多个变量用作接收关键字返回值时,关键字写在这些变量后面。不论何种情况,关键字名后面的列都会包含指定关键字合适的参数。

测试用例举例

Test Case

Action

Argument

Argument

Valid Login

Open Login Page

 

 

Input Name

demo

 

Input Password

mode

 

Submit Credentials

 

 

Welcome Page Should Be Open

 

 

 

 

 

Setting Variables

Do Something

first argument

second argument

${value} =

Get Some Value

Should Be Equal

${value}

Expected value

测试用例表设置

测试用例也可以拥有它们自己的设置。与关键字一样,设置名永远在第二列中,且它们的值会紧随在后续的列中。设置名都被方括号包围着,以区别开关键字。下面列出的是可用的设置名,将会在后面的章节进行解释。

[Documentation]

用于标明一个测试用例的文档

[Tags]  

用于标记测试用例

[Setup], [Teardown]

指定测试的创建和销毁。和使用 [Precondition]和[Postcondition]效果相同。 (synonyms的含义是同义词)

[Template]

用于指定模板关键字。这类测试本身将只包含所对应关键字的参数数据。

[Timeout]

用于设置测试用例超时。超时将会在其对应的章节中进行阐述。

包含设置的测试用例举例

Test Case

Action

Argument

Argument

Test With Settings

[Documentation]

Another dummy test

 

[Tags]

dummy

owner-johndoe

Log

Hello, world!

 

在设置表中与测试用例相关的设置

设置表提供以下测试用例相关的设置项。这些测试用例相关的设置基本使用默认值。

Force Tags, Default Tags

标签的强制值和默认值

Test Setup, Test Teardown

测试安装和销毁的默认值,和使用test Precondition和test Postcondition作用相同

Test Template

默认的模板关键字

Test Timeout

测试用例超时的默认值,超时将会在其对应的章节中进行阐述。

2.2.2 使用参数

之前的例子已经表明关键字可以接收不同的参数,这部分将更彻底地讨论这个重要的功能。如何真正实现使用含不同参数的用户关键字和函数库关键字将在其它章节单独介绍。

关键字可以接受零个或多个参数,一些参数可能有自己默认的值。关键字接受哪种参数取决于其如何实现,寻找此信息最好的地方莫过于关键字注释文档。在本节的 例子中,注释文档是由libdoc.Py这个工具生成的,然而相同的信息我们也可以从类似的注释文档工具例如javadoc中生成。

必选参数

大多数关键字通常都有确定数目的参数。在关键字注释文档中,它们是通过在指定的参数之间添加逗号来分隔开的(如 frist,second,third)。在这种情况下参数的名字并不重要,除非需要解释该参数的作用是什么,但重要的是必须保证其参数数目与注释文档中的数目保持一致。使用过少或者过多的参数都会导致错误的发生。

下面的用例从OperatingSystem函数库中调用了Create Directory 和Copy File关键字,参数格式被规定为path和source, destination,这意味着它们分别带了一个参数和两个参数。而最后一个从BuiltIn库中调用的关键字No Operation,不带任何参数。

关键字以及参数命名
Test Case Action Argument Argument
Example Create Directory ${TEMPDIR}/stuff  
Copy File ${CURDIR}/file.txt ${TEMPDIR}/stuff
No Operation    

默认值

带有默认值的参数可以给出也可以不给出。本文档中,参数名和默认值有等号分隔,如name=default value,但是对于Java实现的关键字而言,一个关键字可能有多种实现方法,只是各个方法给出的参数不同。一般参数都可以给出默认值,但是带有默认值 的参数后面不能再有确定位置的参数。(与Python不同,JAVA默认参数的实现需要用到重载机制:一个相同名字的函数,可以通过不同的参数个数区分。 默认参数其实不体现在Java对应函数的参数列表中,而是在程序内实现,可见这个例子,http://stephenxjc.iteye.com/blog/358512 ,这个讲起来有点儿啰嗦,不展开了,有兴趣的同学可以找我进一步讨论。)

下面举例说明如何使用默认值。这个例子使用Create Files关键字,关键字带有参数path、content=、coding=UTF-8编码方式。(调用的时候)如果试图不带参数或者参数超过三个,那么(此关键字方法)都不能成功调用。

带有默认关键字的
Test Case Action Argument Argument Argument
Example Create File ${TEMPDIR}/empty.txt    
Create File ${TEMPDIR}/utf-8.txt Hyvä esimerkki  
Create File ${TEMPDIR}/iso-8859-1.txt Hyvä esimerkki ISO-8859-1

可变个数的参数

关键字可以接受任意个数的参数。参数可以由必须输入的参数和带有默认值的参数组成,但是所谓的可变参数一般要放在最后。通常文档会在这些参数名字前加一个*号,比如*varargs,以示区别。JAVA库的实现依然与之不同。

举例说明Remove FilesJoin Paths关键字分别带有*paths和base参数和*parts参数。前者可带有任意数量参数,而后者则要求至少有一个参数

Keywords with variable number of arguments
Test Case Action Argument Argument Argument
Example Remove Files ${TEMPDIR}/f1.txt ${TEMPDIR}/f2.txt ${TEMPDIR}/f3.txt
@{paths} = Join Paths ${TEMPDIR} f1.txt
f2.txt f3.txt f4.txt

命名参数

当一个关键字接受多于一个有默认值的参数时,只对最后一个参数进行重新赋值是不可能的。例如,一个关键字有三个参数:arg1=a, arg2=b, arg3=c,其中arg1和arg2最终会变成空字符串,而不是它们的默认值。

用位置参数覆盖默认值

Test Case

Action

Argument

Argument

Argument

Positional Arguments

[Documentation]

1st and 2nd

argument get

empty strings

Example Keyword

 

 

value

为了更容易地修改部分有默认值的参数,我们在Robot Framework 2.5中增加了新的语法。有了这些语法,就能通过“argname=value”的格式直接修改参数的默认值。而需要使用默认值的参数就可以不用去理会了。下面的例子使用了与前面例子中一样的关键字来说明这种语法。在这个例子中,未指定的参数将获得他们的默认值。

使用命名参数的关键字

Test Case

Action

Argument

Argument

Argument

Named Arguments

[Documentation]

Not specified

arguments get

default values

Example Keyword

arg3=value

 

 

Example Keyword

arg2=xxx

arg3=yyy

 

当没有参数被排除的时候,命名变量语法也能够很自然接收参数的默认值。相比只给出一个值,这种方法也使得参数的含义更加清晰。尽管用这种方法来命名参数是不可能的。此外,先给出命名参数再给出可变参数是也不可能的。

命名参数功能最大的限制是目前只能用于用户关键字和继承了Python的静态库API、混合库API的关键字库。未来框架可能会支持JAVA库和动态库 API(使用可变参数),在此之前,我们需要用用户关键字来包裹不兼容的关键字(来解决java库和动态库的关键字不支持变参的问题)。

提示:当用户关键字使用命名参数语法时,参数名不能使用${}。例如,用户关键字${arg1}=default, ${arg2}=second必须写作arg2=override。

命名参数语法仅用参数等号前的部分和一个带默认值的参数名相匹配时。这种匹配从给定的参数列表末尾开始直到没有可匹配参数为止。在一些极少数特例中,可以使用“\”规避这种语法,例如nomatch\=here。

提示:命名参数语法对大小写和空格均敏感。前者意味着如果定义一个参数arg,必须写作arg=<value>,Arg=<value> 和ARG=<value>都是不可行的。后者意味着在等号前不能有空格,等号后的空格将被视作默认值的一部分处理。

下面的例子展示了命名参数语法在包括引入测试库等不同场景下的使用方法:

命名参数示例

Setting

Value

Value

Value

Library

Telnet

prompt=$

 

Test Case

Action

Argument

Argument

Argument

Example

Open connection

10.0.0.42

port=${25}

List files

options=-lh

List files

path=/tmp

options=-l

 

Keyword

Action

Argument

Argument

Argument

List files

[Arguments]

${path}=.

${options}=

Execute command

ls ${options} ${path}

嵌入参数的关键字名

另一种完全不同的定义参数的方法是将参数嵌入关键字名。这种语法目前为止只支持用户关键字。

2.2.3 用例名称和文档

测试用例名直接来自于测试用例表:它就是我们在测试用例列里直接输入的内容。测试套件里的测试用例应该有唯一的名称。关于这一点,你也可以用automatic variable的${Test_Name}来指明其测试名称。不管什么时候执行用例都可以这样使用,,包括所有的用户级关键字、测试(setup)装载和测试销毁(teardown)。

Documentation设置允许你可以为测试用例设置自由文本说明。这些文字说明可以显示在命令行输出、测试日志和测试报告中。如果文本说明太长,可以将其拆分到几个单元格中,,文本中间用空格进行连接。可以使用简单的html 格式 和变量,以文档变得更加生动。从Robot Framework 2.1开始,文档中一些不存在的变量被不做改变的直接记录下来。

测试用例文档例子

Test Case

Action

Argument

Argument

Simple

[Documentation]

Simple documentation

 

 

No Operation

 

 

Splitting

[Documentation]

This documentation is a bit longer and

it has been split into several columns.

 

No Operation

 

 

Formatting

[Documentation]

*This is bold*, _this italic_ and

here is a link: http://robotframework.org

 

No Operation

 

 

Variables

[Documentation]

Executed at ${HOST} by ${USER}

 

 

No Operation

 

 

使用用意清晰的用例名称很重要,如果这样通常就不需要用文档关键字做额外的说明了。

如果需要记录测试用例的逻辑,这通常是用例中的关键字需要更好的命名的信号,需要改进这些关键字,而不是增加额外文档。最后要说的是,元数据,如上面例子中的环境和用户信息应该使用标签(tags)来进行定义。

2.2.4给测试用例做标记

在Robot Framework使用标签是一个简单,但是功能强大的测试用例分类机制。标签是自由文本,至少可用于以下用途:

  • 标签在测试报告、日志中显示,当然,在测试数据中标签可以向测试用例提供元数据。用于测试用例的统计(总计、通过的、失败的测试用例都可以通过标签自动统计)。
  • 使用标签,你可以筛选将要被执行的用例。
  • 使用标签,你可以指定哪些是关键用例。

在本节只介绍了如何为用例设置标签,下面列出了不同的设置标签的方法。这些方法能够一起使用。

 

在Setting表中设置 Force Tags

     使用该设置的测试用例文件中的所有测试用例都能获得指定的标签。如果在测试套件的初始化文件中使用该标签,子测试套件的所有测试用例也都获得该标签。

 

在Setting表中设置 默认 Tags

 

没有[Tags]设置的测试用例,将获得Default Tags从Robot Framework的2.5版本开始,测试套件的初始化文件部分将不再支持该设置。

测试用例表中的[Tags]

测试用例经常用到这些标签。此外,它无法获取Default Tags定义的标签,因此它可能是通过使用空值来覆盖Default Tags。从Robot Framework 2.5.6开始,也使用NONE来替代Default Tags。

— settag 命令行选项

所有已执行的测试用例都将获得此标签,原有使用的标签仍然起作用。。

设置标签与删除标签关键字这些内建的关键字能够用于在用例执行过程中修改标签。

标签是自由文本,但它们会被做标准化处理:都会被转换成小写字母且会去掉空格。如果一个测试用例获得多次相同的标签,除第一次以外的都会被删除。标签可以使用变量,假设这些变量存在。

 

Tagging example

Setting

Value

Value

Value

Force Tags

req-42

 

 

Default Tags

owner-john

smoke

 

 

Variable

Value

Value

Value

${HOST}

10.0.1.42

 

 

 

Test Case

Action

Argument

Argument

No own tags

[Documentation]

This test has tags

owner-john, smoke, req-42

 

No Operation

 

 

 

 

 

 

With own tags

[Documentation]

This test has tags

not_ready, owner-mrx, req-42

 

[Tags]

owner-mrx

not_ready

 

No Operation

 

 

 

 

 

 

Own tags with variables

[Documentation]

This test has tags

host-10.0.1.42, req-42

 

[Tags]

host-${HOST}

 

 

No Operation

 

 

 

 

 

 

Empty own tags

[Documentation]

This test has tags

req-42

 

[Tags]

 

 

 

No Operation

 

 

 

 

 

 

Set Tags and Remove Tags Keywords

[Documentation]

This test has tags

mytag, owner-john

 

Set Tags

mytag

 

 

Remove Tags

smoke

req-*

 

RobotFramework用户说明书翻译稿第2.1节

原文地址:http://blog.sina.com.cn/s/blog_654c6ec70100zj6p.html

声明:

1.此文档是和重庆同事的共同劳动成果,不是我一个人翻译的。

2.依据RobotFramework2.6.3版本翻译,由于水平有限,时间仓促,难免有错误,请大家不吝指出。

专用名词:

Test Data :测试数据

Test Suite :测试套件

test suite directory 测试套件目录

test library :测试库

escape : 转义

separater :分隔符

output :输出 (这里指 Report 和Log)

space :空格字符

whitespace :占位字符 (空格,换行,制表符)

preamble:报文头

———————————————————————————————

原文链接:

http://robotframework.googlecode.com/hg/doc/userguide/RobotFrameworkUserGuide.html?r=2.6.3#id314

——————————————————————————————–

翻译部分

2.1测试数据语法

本节描述了RF测试数据的总体语法规则。后面的章节中将解释怎么真正的创建测试用例、测试套件等

2.1.1文件和目录

2.1.2 支持的文档格式

2.1.3 测试数据表格

2.1.4数据解析规则

2.1.1文件和目录

组织测试用例的层级结构是按照下面规则构建的:

·         测试用例存放在测试用例文件中

·         测试用例文件自动创建一个包含该文件下所有测试用例的测试套件。

·         包含测试用例文件的目录形成一个更高等级的测试套件。此测试套件目录,将本目录下测试用例文件生成的所有测试套件作为其子套件。

·         测试套件目录也可以包含其它测试套件目录,并且可以根据需要对其进行任意深度的嵌套。

·         测试套件目录可以包含一个特殊的初始化文件。

除此之外:

·         测试库包含用户基本关键词。

·         源文件包含变量和高级用户关键词。

·         变量文件提供比源文件更为灵活的创建变量方法。

2.1.2支持的文档格式

Robot Framework测试数据以表格形式进行定义,可以使用的格式包括超文本标记语言(HTML),制表符分隔值(TSV),纯文本或者新结构化文本(reST)。

Robot Framework根据文件的扩展名来为这些以不同格式存储的测试数据选择解析器。扩展名不区分大小写,可识别的扩展名包括HTML的.html,.htm和.xhtml,TSV的.tsv,纯文本的.txt和新结构化文本的.rest。

针对HTML和TSV格式有不同的测试数据模板,使你轻易就可以开始动手编写用例。

HTML格式

 

在HTML文件中,测试数据通过分隔的表格进行定义(见下例)。Robot Framework基于首个单元格里的文本来识别这些测试数据表。所有可识别表格之外的参数都自动忽略。

使用HTML格式

Setting

Value

Value

Value

Library

OperatingSystem

 

 

 

 

 

 

Variable

Value

Value

Value

${MESSAGE}

Hello, world!

 

 

 

 

 

 

Test Case

Action

Argument

Argument

My Test

[Documentation]

Example test

 

Log

${MESSAGE}

 

My Keyword

/tmp

 

 

 

 

Another Test

Should Be Equal

${MESSAGE}

Hello, world!

 

Keyword

Action

Argument

Argument

My Keyword

[Arguments]

${path}

 

Directory Should Exist

${path}

 

编辑测试数据

你可以使用任何你喜欢的编辑器来编辑HTML文件中的测试数据,但是推荐使用可以实实在在看到表格的图形化编辑器。还有一个叫做RIDE的工具,它专门用来编辑测试数据。

编码与实体引用

支持HTML实体引用(例如,&auml;)。此外,只要在参数文档中有明确定义,任何编码格式都可以使用。标准HTML文档必须使用META元素,如下例:

<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>

 

XHTML文档应该使用XML报文头(preamble),如下例:

<?xml version=”1.0″ encoding=”Big5″?>

 

如果没有明确定义编码格式,Robot Framework默认使用ISO-8859-1。

TSV格式

在Robot Framework中也可以使用TSV格式达到和HTML格式同样的效果。在一个TSV文档中,所有的数据都在一个大表格中。测试数据表格通过一个或者多 个星号(*)开始,紧跟一个标准的表格名和一个可选的标识结束的星号被识别出来。所有在首个可识别表格之外的数据和表格之外的HTML数据一样,将被自动 忽略。

使用TSV格式

*Setting*

*Value*

*Value*

*Value*

Library

OperatingSystem

 

 

 

 

 

 

 

 

*Variable*

*Value*

*Value*

*Value*

${MESSAGE}

Hello, world!

 

 

 

 

 

 

 

 

*Test Case*

*Action*

*Argument*

*Argument*

My Test

[Documentation]

Example test

 

Log

${MESSAGE}

 

My Keyword

/tmp

 

 

 

 

Another Test

Should Be Equal

${MESSAGE}

Hello, world!

 

 

 

 

 

 

*Keyword*

*Action*

*Argument*

*Argument*

My Keyword

[Arguments]

${path}

 

Directory Should Exist

${path}

 

编辑测试数据

 

你可以通过任何一个电子制表程序编辑一个TSV文档,例如Microsoft Excel。选择制表符分隔格式,保存文件的时候记得将文件扩展名设置为.tsv。还有一个好建议是关掉自动修订,使工具把文档里的所有值都当成纯文本。

通过文本编辑器编辑TSV文档相对容易一些,尤其是如果这个编辑器可以很直观地区分制表分隔符和空格的话。TSV文档也支持通过RIDE进行编辑。

Robot Framework是以如下方式解析TSV中数据的:首先把内容拆分成行,再根据表格里的字符把行拆分成单元格,电子制表程序有时会给单元格内容添加引号(如,“my value”),RF会将引号去除,有时候括号会成对出现在一起,RF可以正确处理这种情况。

如果使用一个电子制表程序创建TSV参数,你不需要太关注这一点,但是如果你是通过编程的方式创建参数,你必须遵循和电子数据表一样的引用规则。

编码

 

TSV文档通常使用的是UTF-8编码。因为ACSII属于UTF-8的子类,因此ASCII编码也是被支持的。

纯文本格式

 

纯文本格式与TSV格式有点类似,但是在每个单元格之间的分隔符的有所区别。TSV格式使用的是制表分隔符Tabs,但是纯文本中你可以通过两个或者更多空格或者两侧带空格的竖线( | )进行分隔。

同TSV格式相似,每个测试数据表之前都必须有一个或者多个星号。其它部分的星号和空格会被自动忽略,举例来说,***Settings*** 和 *Settings 的作用是一样的。同TSV格式相似的另一个地方是:所有第一个数据表前的的数据都会被忽略。

在纯文本文件中字符“Tab”会自动被转化为两个空格。所以我们能够使用“Tab”键输入分隔符,就和在TSV格式里一样。注意,在纯文本文件中,多个“Tab”字符会被当作一个分隔符,在TSV格式中却会被当作多个。

空格分隔格式

作为分隔符的空格个数可以不同,但至少要有两个空格,这样就能够很好地对齐数据。这是用文本编辑器编辑时纯文本格式的一个非常明显的优越性,因为TSV无法控制数据对齐。

*** Settings ***

Library     OperatingSystem

 

*** Variables ***

${MESSAGE}  Hello, world!

 

*** Test Cases ***

My Test  [Documentation]  Example test

Log         ${MESSAGE}

My Keyword  /tmp

 

Another Test

Should Be Equal  ${MESSAGE}  Hello, world!

 

*** Keywords ***

My Keyword  [Arguments]  ${path}

Directory Should Exist  ${path}

 

因为空格键被用作分隔符,所有的空白单元都必须使用${EMPTY}或者一个单反斜线进行转义。

在任何文件格式里处理空白字符的方式都相同,那就是在开始 ,结尾和连接处的 空格都得被转义。

 

管道符和空格分隔的格

空格分隔格式的最大问题是,把关键字和参数直观的同参数分开很困难。当关键字有多个参数,或者是参数包含空格时这个问题更加突出。这时候管道符和空格分隔的格式就凸显优点了,因为在视觉上,他们能够清晰的划分单元格边界。

 

*Setting*     *Value* 
Library    | OperatingSystem 
  
*Variable* |     *Value* 
${MESSAGE} | Hello, world!
  
*Test Case*  | *Action*        | *Argument* 
My Test      | [Documentation] | Example test 
Log             | ${MESSAGE} 
My Keyword      | /tmp 
Another Test | Should Be Equal | ${MESSAGE}   | Hello, world! 
  
*Keyword*
My Keyword | [Arguments] | ${path}
Directory Should Exist | ${path}

 

在一个纯文本文件可以同时包含“只用空格分隔”和“用空格和管道符一起分隔”的测试数据,但单行必须始终使用相同的分隔符。RF依靠行首必须使用的“|” 字符识别管道符和空格分隔行。但在该行的末尾的管道符是可选的。在管道符的两侧都必须有一个空格,但是除非为了让数据显得清晰,没有必要对齐。

在使用管道符合空格分隔格式的时候,没有必要转义空置单元格(除非是末尾的空置单元格)。唯一要考虑的是,在实际测试数据中被空格符围绕的管道符必须用一个反斜杠转义:

 

${file count} = | Execute Command | ls -1 *.txt \| wc -l

Should Be Equal | ${file count}   | 42

 

编辑和编码

 

较之HTML和TSV格式,纯文本文件的最大好处是,使用普通的文本编辑器就能方便的编辑。

Emacs甚至支持有特殊的 robot-mode.el提供语法高亮和关键字补全。虽然RIDE也支持纯文本文件,但是他只支持空格分隔这一种格式。

 

 

与TSV测试数据相同,纯文本文件总是使用UTF-8编码。因此也支持ASCII文件。

 

reStructuredText格式

 

reStructuredText的(REST)是一个易于阅读的纯文本标记语法,通常使用Python项目的文档(包括Python自身,以及本用户指 南)。使用reST和RF,你能够将各种格式的文档和表格混合,这样就能够用一种简洁的文本格式定义测试数据,这样的测试数据也容易被文本编辑器,文本比 较工具,源代码控制系统使用。

 

用来处理reStuctredText的工具是doccutil项目的一部分(前面连接下载),你可以参阅它的快速使用说明(quick reference guide)来查看最常见的格式组织形式,当然也包括RobotFramework使用的表格格式。注意,RobotFramework在真正解析测试数据之前会将reST格式转化成HTML。所以测试数据必须严格依照reST语法,否则解析将会失败。

 

注意

 

使用Robot Framework中的reST文件需要安装Python的docutils的模块。

 

在reST的文件中,测试数据定义在表内,类似于HTML格式。RobotFramework根据表中的第一个单元格识别测试数据表,被识别的表以外的数据将被忽略

 

下面例子包含四张适中reST简单表格语言的测试数据表。注意每行的第一个空白单元格必须使用\或者..

============  ================  =======  ======= 
Setting          Value         Value    Value 
============  ================  =======  ======= 
Library       OperatingSystem 
============  ================  =======  ======= 
  
  
============  ================  =======  ======= 
Variable         Value         Value    Value 
============  ================  =======  ======= 
${MESSAGE}    Hello, world! 
============  ================  =======  ======= 
  
  
============  ===================  ============  ============= 
Test Case          Action           Argument      Argument 
============  ===================  ============  ============= 
My Test       [Documentation]      Example test 
            Log                  ${MESSAGE} 
            My Keyword           /tmp 
\
Another Test  Should Be Equal      ${MESSAGE}    Hello, world! 
============  ===================  ============  ============= 
  
  
============  ======================  ============  ========== 
Keyword            Action             Argument     Argument 
============  ======================  ============  ========== 
My Keyword    [Arguments]             ${path} 
            Directory Should Exist  ${path} 
============  ======================  ============  ========== 

 

编辑测试数据

 

reST文件的测试数据可以用任何文本编辑器编辑。这里推荐能够设置等宽字体的文本编辑器,,以帮助对齐表格元素。

 

请注意,RIDE不支持直接编辑reST源文件中的测试数据。

 

使用reST时的临时文件

 

不同于HTML或TSV格式,Robot Framework不直接解析reST文件。相反,docutils自动将reST源文件转化成HTML临时文件后由Robot Framework读取。这些临时文件被读取后立刻被
RF删除,不需要用户直接调用docutils的工具。

 

reST源文件中的语法错误

 

如果reST文件是存在语法错误(例如,一个格式有错误的表),将不能完成从reST到HTML的转化,也没有测试用例会从该文件被读取。当这种情况发生时,Robot Framework将docutils的错误消息显示在控制台输出,显示文件名、行号、源码上下文和错误类型。

2.1.3 测试数据表格

测试数据由以下4种表格组成。这些测试数据表以第1单元进行命名,最后一列列出了不同的别名。这些别名也被用作表名。

不同的测试数据表格:(由于真正使用的时候要用英文单词,所以这部分不用翻译)

表格名称

作用

别名

Setting表 1、  加载测试库文件、资源文件和变量文件;

2、  为测试文件和测试用例定义中间变量;

Setting, Settings, Metadata
Variable表 变量定义,这些变量能在整个测试数据中使用。 Setting, Settings, Metadata
Test Case表 利用存在的关键字创建测试用例; Test Case, Test Cases
Keywords 表 利用已存在的低级关键字创建用户级关键字; Keyword, Keywords, User Keyword, User Keywords

 

2.1.4 数据解析规则

忽略的数据

当Robot FrameWork解析测试数据时,当通常会忽略下面内容:

1、  所有没有在第一个单元格使用可被识别的表名(2.1.3节中列出)的表;

2、  表格第1行中不在第一个单元格中所有的内容;

3、  HTML/reST中表外的数据和TSV中第一个表格前的数据;

4、  所有用作增加可读性的空行;

5、  每行最后为空的单元格;你必须增加1个”\”以防这些单元格被忽略掉;

6、  所有单个反斜杠(\); 他们被认为是转义符;

7、  #号,如果在一个单元格的最开始使用它,就说明这个单元格里是注释内容;

8、  HTML/reST中所有格式化的数据;

当Robot FrameWork忽略某些数据时,在任一个测试结果报告中这些测试数据将不显示出来。除此之外,同Robot Framework一起使用的大多数工具也忽略这些数据。为了在Robot Framework输出中增加一些可见的数据。在RIDE中,把它放置在文档描述、测试用例或测试套件的一些元数据中,或者使用BuiltIn库里的Log或者Comment关键字。

Escaping(转义)

Robot Framework的转义字符是反斜杠(\)。

转义字符的使用方式如下:

  • 转义特殊字符,使其真实值能被使用
    • \${notvar} 代表字符串 ${notvar} 而不是一个变量
    • \\表示是一个反斜杠(例如:c:\\temp)
    • \#被转义成真正的字符#,这时#号不再代表注释的开头。
  • 影响空白字符的解析
  • 避免一行中最后一个的单元格被忽略,(这需要 在相应的单元格添加“\”)。另一种方法是使用内置变量 ${EMPTY}。
  • 在使用纯文本时转义在for loop(循环)时使用的缩进。。

注意

这些转义规则只适用于关键字和设置的参数值。其他情况不能使用转意规则,例如,关键字和测试用例名。

 

Handling whitespace(处理占位字符字符)

Robot Framework处理占位字符,例如空格,换行符和制表符,与其在HTML中的处理方式一致。这意味着Robot Framework:

·         会在所有单元格中除去开头和结尾的空格(相当于Trim()函数)

  • 多个连续的空格转换成一个空格。
  • 将所有换行符和制表符转换成空格。

为防止Robot Framework按照以上规则来解析数据,可以使用反斜杠

  • 想在字符最前保留空格,例如:\ some text。
  • 保留多个连续空格,例如:\ \ more text。
  • 在字符最尾保留空格,例如:some text \ \。
  • \n 表示换行符,例如:line\n2nd line。
  • \t 表示制表符,例如:text\tmore text。
  • \r 表示回车符,例如:text\rmore text。

另外,,前置,后置,或连续空格可以使用内置变量${SPACE}清晰的表示。可扩展的变量语法,甚至允许像${SPACE * 8}这样的语法,可以使连续空格的处理变得非常简单。

注意

\n后可能存在为转义的空格也会被忽略掉掉以便能够在单行中书写多行数据。这意味着two lines\nhere与two lines\n here是等价的。此规则的例外是,空格在扩展变量语法里是不被忽略的。

 

将测试数据分行

如果数据过长,需要换行,可以使用省略号(…),表示延续前一行的内容。在测试用例与用户关键字表中,省略号前必须至少含有一个空单元格。在setting与变量(variable)表中,省略号可直接填入setting name或者变量名称(variable name)单元格中。

所有表格中,会忽略省略号前的所有空单元格。

此外,Setting部分的取值可以被写到多个表中(主要是由Documents关键字使用)。解析测试数据时,这些数据会被连接起来,中间加一个空格。

以下将举例说明这些语法。在前三个表中,显示分行前的测试数据。由后三个表可以看出,将测试数据分行显示后,只需要较少的列。

分行前的测试数据

Setting Value Value Value Value Value Value
Dafault Tags Tag-1 Tag-2 Tag-3 Tag-4 Tag-5 Tag-6

Variable Value Value Value Value Value Value
@{LIST} this list has quite many items

Test Case Action Argument Arg Arg Arg Arg Arg Arg
Example [Documentation] Documentation for this test case. This can get quite long…            
  [Tags] t-1 t-2 t-3 t-4 t-5    
  Do X one two three four five six  
  ${var} = Get X 1 2 3 4 5 6

分行后的测试数据

Setting Value Value Value
Dafault Tags Tag-1 Tag-2 Tag-3
Tag-4 Tag-5 Tag-6

Variable Value Value Value
@{LIST} this list has
quite many items

Test Case Action Argument Argument Argument
Example [Documentation] Documentation for this test case.
  This can get quite long…
  [Tags] t-1 t-2 t-3
  t-4 t-5  
  Do X one two three
  four five six
  ${var} = Get X 1 2
  3 4 5
  6  

注:一般只有Robot Framework2.5.2或者更新的版本才允许省略号前存在空单元格。在早期的版本中,只允许在for循环内部,存在一个前置的空单元格。

拆分reSt表中的数据

在标记reST表格的纯文本文档中,有两种可以创建测试数据的表格语法。RF规定,当使用简单表格语法时,除了…以外,续行第一个单元格必须使用\ or ..。下面是一个使用reST简单表格的格式例子:

 

对于方格式语法,续行首个单元格可以为空,当其是HTML表格时,第二个单元格需要包括…。