Robot Framework官方教程(二)测试数据语法

Robot Framework官方教程(一)入门
Robot Framework官方教程(二)测试数据语法
Robot Framework官方教程(三)创建测试用例
Robot Framework官方教程(四)创建测试套件
Robot Framework官方教程(五)使用测试库
Robot Framework官方教程(六)变量
Robot Framework官方教程(七)创建用户关键字
Robot Framework官方教程(八) 资源和变量文件
Robot Framework官方教程(九) 执行测试用例
Robot Framework官方教程(十)扩展RobotFramework框架

2.1.1文件和目录

测试数据的层次结构安排如下:

  • 测试数据在测试数据文件中创建。
  • 测试数据文件会自动创建一个包含该文件中的测试数据的测试套件
  • 包含测试数据文件的目录构成了更高级别的测试套件。这样的测试套件目录具有从测试数据文件创建的套件作为其子测试套件。
  • 测试套件目录还可以包含其他测试套件目录,并且此分层结构可以根据需要进行深度嵌套。
  • 测试套件目录可以有一个特殊的初始化文件

除此之外,还有:

2.1.2支持的文件格式

Robot Framework测试数据支持以表格格式定义,使用超文本标记语言(HTML),制表符分隔值(TSV),纯文本或reStructuredText(reST)格式。Robot Framework根据文件扩展名为测试数据选择解析器。扩展名不区分大小写,识别的扩展名为 .html,.htm和.xhtml用于HTML,.tsv 用于TSV,.txt用于纯文本,.rst或 .rest用于reStructuredText。

HTML格式

在HTML文件中,测试数据在单独的表中定义(请参阅下面的示例)。Robot Framework 根据第一个单元格中的文本识别这些测试数据表。忽略已识别表格之外的所有内容。

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的工具 可用于编辑测试数据。

TSV格式

TSV格式可以在Robot Framework的测试数据中使用,其目的与HTML相同。在TSV文件中,所有数据都在一个大表中。测试数据表从一个或多个星号(*)中识别,然后是正常的表名和可选的结束星号。第一个识别的表之前的所有内容都与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}
编辑测试数据

您可以在任何电子表格程序(如Microsoft Excel)中创建和编辑TSV文件。保存文件时选择以制表符分隔的格式,并记住将文件扩展名设置为.tsv。关闭所有自动更正并配置工具以将文件中的所有值视为纯文本也是一个好主意。

使用任何文本编辑器都可以相对轻松地编辑TSV文件,特别是如果编辑器支持从空格中直观地分隔选项卡。RIDE也支持TSV格式。

Robot Framework首先将所有内容拆分为行,然后根据表格字符将行拆分为单元格来解析TSV数据。电子表格程序有时会用引号括起单元格(例如,“my value”),而Robot Framework会删除它们。数据中可能的引号加倍(例如, "my ""quoted"" value"),这也是正确处理的。如果您使用电子表格程序来创建TSV数据,则不需要注意这一点,但如果以编程方式创建数据,则必须遵循与电子表格相同的引用约定。

编码

TSV文件总是应该使用UTF-8编码。由于ASCII是UTF-8的子集,因此自然也支持纯ASCII。

纯文本格式

纯文本格式在技术上与TSV格式类似,但是单元格之间的分隔符是不同的。TSV格式使用制表符,但在纯文本格式中,您可以使用两个或多个空格,或用管道字符(|)包围。

测试数据表在名字前必须有一个或多个星号,类似于在TSV格式。否则会忽略表头中的星号和可能的空格,例如,***Settings****Settings*的工作方式相同。与TSV格式类似,忽略第一个表之前的所有内容。

在纯文本文件中,tabj会自动转换为两个空格。这允许使用单个tab作为分隔符,类似于TSV格式。但请注意,在纯文本格式中,多个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}

因为space被用作分隔符,所有空单元必须通过${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}

纯文本文件格式的测试数据可以既包含空格又包含空格加管道的分隔格式,但是单行必须始终使用相同的分隔符。管道和空格分隔符由行首的管道符识别,但行尾的管道符是可选的。管道两侧必须至少有一个空格(开头和结尾除外),除了使数据更清晰之外,不需要对齐管道。

使用管道和空格分隔格式时,无需转义空单元格(行尾空单元格除外)。唯一要考虑的是,实际测试数据中的管道必须使用反斜杠进行转义:

| ${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,您可以混合格式丰富的文档和表格,以简明的文本格式指定测试数据,使用简单的文本编辑器,差异工具和源代码控制系统。

2.1.3测试数据

测试数据由下面列出的四种类型的表组成。这些测试数据表由表的第一个单元格标识,下表中的最后一列列出了可用作表名称的不同别名。

表名 用于 别名
设置表 1)导入测试库资源文件变量文件 2)为测试套件测试用例定义元数据 Setting, Settings, Metadata
变量表 定义可在测试用例中的其他位置使用的变量 Variable, Variables
测试用例表 从可用关键字创建测试用例 Test Case, Test Cases
关键字表 从现有的较低级别关键字创建用户关键字 Keyword, Keywords, User Keyword, User Keywords

2.1.4解析数据的规则

被忽略的数据

当Robot Framework解析测试数据时,它会忽略:

  • 所有不以第一个单元格中的已识别表名开头的表。
  • 除了第一个单元格之外,表格第一行上的所有其他内容。
  • HTML / reST中的表外数据和TSV中第一个表之前的数据。
  • 所有空行,这意味着可以使用这些行来使表更具可读性。
  • 行尾的所有空单元格; 您必须添加反斜杠(\)以防止忽略此类单元格。
  • 所有单反斜杠(\); 它们被用作转义。
  • 哈希标记(#)后面的所有字符,如果它是单元格的第一个字符; 这意味着哈希标记可用于在测试数据中输入注释。
  • HTML / reST测试数据中的所有格式。

当Robot Framework忽略某些数据时,此数据在任何生成的报告中都不可用,此外,Robot Framework使用的大多数工具也会忽略它们。要添加在Robot Framework输出中可见的信息,或者可用于RIDE的信息,请将其放在测试数据或套件的文档或其他元数据中,或使用BuiltIn库中提供的Log或Comment关键字进行记录

转义

Robot Framework解析器的转义字符是反斜杠(\)。转义字符可以使用如下:

注意

这些转义规则仅适用于关键字的参数和设置的值。例如,它们不用于关键字和测试数据名称。

处理空白

Robot Framework处理空格(例如空格,换行符和制表符)的方式与在HTML中处理它们的方式相同。这意味着Robot Framework:

  • 删除所有单元格中的首尾空格。
  • 将多个连续空格更改为单个空格。
  • 将所有换行符和制表符转换为空格。

为了防止Robot Framework根据这些规则解析数据,可以使用反斜杠:

  • 在行首空格之前,例如\ some text
  • 在连续的空格之间,例如text \ \ more text
  • 行尾空格,例如一些文本some text \ \
  • 作为\n创建换行符,例如first line\n2nd line
  • 作为\t来创建制表符,例如text\tmore text
  • 作为\r来创建回车符,例如text\rmore text

表示首尾或连续空格的另一种更常见的方法是使用内置变量 ${SPACE}。该扩展变量甚至允许类似语法${SPACE *8},这使得处理连续空格非常简单。

注意

\n后面未转义空白字符会被忽略,以允许包含wrapping换行符的长行。这意味着two lines\nheretwo lines\n here是等价的。此规则的一个例外是在扩展变量中不会忽略空白字符。

将测试数据划分为多行

如果有很多数据,一行容纳不下,则可以使用省略号(...)继续上一行。在测试数据Testcase和用户关键字Keywords表中,省略号前必须至少有一个空单元格。在设置Settings和变量Variables表中,它可以直接放在设置或变量名称下。

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

此外,只需一个值(主要是文档Document)的设置值可以拆分为多个列。在解析测试数据时,这些值将与空格一起连接。从Robot Framework 2.7开始,分成多行的文档和测试套件元数据将与换行符一起链接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266