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解析器的转义字符是反斜杠(\)。转义字符可以使用如下:

  • 要转义特殊字符以便使用它们的文字值:

    • \${notvar}表示看起来像变量的文字字符串${notvar}
    • \\表示单个反斜杠(例如,C:\\Temp
    • \#表示文字哈希()标记,即使在单元格的开头
  • 影响空格的解析。
  • 为了防止在使用纯文本格式时在一般的行末和任何地方忽略空单元格。另一种更常见的可能性是使用内置变量 ${EMPTY}
  • 在使用管道和空格分隔格式时转义管道字符。
  • 使用纯文本格式时,在for循环中转义缩进的单元格。
  • 防止链接文档使用换行符拆分为多行。

注意

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

处理空白

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开始,分成多行的文档和测试套件元数据将与换行符一起链接。

Robot Framework(二)测试数据语法的更多相关文章

  1. Robot Framework(十二) 执行测试用例——配置执行

    3.4配置执行 本节介绍可用于配置测试执行或后处理输出的不同命令行选项.与生成的输出文件相关的选项将在下一节中讨论. 3.4.1选择测试用例 通过测试套件和测试用例名称 按标签名称 当没有测试匹配选择 ...

  2. Robot Framework(六)变量

    变量 2.5.1简介 变量是Robot Framework的一个不可或缺的特性,它们可以在测试数据的大多数地方使用.最常见的是,它们用于测试用例表和关键字表中关键字的参数,但所有设置都允许在其值中使用 ...

  3. Robot Framework(十九) 附录

    6附录 6.1测试数据中的所有可用设置 6.1.1设置表 Setting表用于导入测试库,资源文件和变量文件,以及定义测试套件和测试用例的元数据.它可以包含在测试用例文件和资源文件中.请注意,在资源文 ...

  4. robot framework测试数据语法

    Robot Framework通过文件的扩展名来选择使用何种解析器. 扩展名不分大小写. 可以识别的扩展名包括: HTML: .html, .htm 和 .xhtml TSV: .tsv 纯文本: . ...

  5. robot framework学习笔记之二———变量

    Robot Framework的变量分为标量, 列表和字典, 分别使用语法格式 ${SCALAR}, @{LIST} 和 &{DICT} 来定义. 此外, 环境变量可以直接使用语法 %{ENV ...

  6. Robot Framework语法学习(一)

    Robot Framework语法学习: 一.变量的声明.赋值与使用 1.变量标识符:每个变量都可以用  变量标识符 ${变量名} 来表示. 2.变量声明:可以在TestSuite上点右键或者在Edi ...

  7. Robot Framework - 5 - 创建测试数据

    Creating test data User Guide - Creating test data:http://robotframework.org/robotframework/latest/R ...

  8. Robot Framework 学习笔记(二)-------第一个脚本

    robot Framework环境搭建好之后先来一个简单的脚本跑一下 一.新建项目 二.新建测试套件  三.创建测试用例 四.导入Selenium2Library库 因为RF框架编写基于web 的测试 ...

  9. Robot Framework(8)——脚本语法示例记录

    大神写了一个Robot Framework的脚本,好多语法之前没接触过,就有了这篇,记录下来一起学习,欢迎纠错 第二三四五列,一般是入参,红色的表示必填的入参.浅灰色表示选填的入参.深灰色表示无需填写 ...

随机推荐

  1. 利用Flask-SQLAlchemy提供的paginate()方法实现博客文章的分页显示

    在开发blog系统的时候,我们有一个需求,就是要显示作者已经发表的blog文章的列表,或显示作者关注者的文章列表.实现这个功能并不复杂,只需要在存储文章的数据库中过滤出指定作者的文章,然后渲染HTML ...

  2. HDU 2415 Bribing FIPA

    Bribing FIPA Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. Original I ...

  3. [bzoj4084][Sdoi2015]双旋转字符串_hash

    双旋转字符串 bzoj-4084 Sdoi-2015 题目大意:给定两个字符串集合 S 和 T .其中 S 中的所有字符串长度都恰好为 N ,而 T 中所有字符串长度都恰好为 M .且 N+M 恰好为 ...

  4. 神经网络入门游戏推荐BugBrain

    今天看到一款神经网络入门游戏.BugBrain.在游戏中,你能够通过连接神经元.设置神经元阈值等建造虫子的大脑,让瓢虫.蠕虫.蚂蚁等完毕各种任务.下载下来玩了玩,难度真不是入门级的= =! 真心佩服作 ...

  5. Ruby 教程

    Ruby 教程 http://www.runoob.com/ruby/ruby-tutorial.html http://guides.rubyonrails.org/getting_started. ...

  6. 你真懂JavaScript吗?

    正文 题目1: if (!("a" in window)) { var a = 1; } alert(a); 题目2 var a = 1, b = function a(x) { ...

  7. cocos2dx3.0 结构图

    图片较大.请下载看 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdzE4NzY3MTA0MTgz/font/5a6L5L2T/fontsize/400/f ...

  8. Android端 配置极光推送

    由于业务须要,androidclient须要加推送.原来採用的百度推送.可是小米手机有时候收不到.后来换成了极光推送,极光的话全部设备都能收到推送,可是在高峰的时候会推迟.博主说的免费版的,收费的没用 ...

  9. Maven与IDEA结合

    转自:https://blog.csdn.net/zzpzheng/article/details/49474671 1. 什么是 Maven,为什么要使用 Maven 而不是 Ant Maven简单 ...

  10. 南海区行政审批管理系统接口规范v0.3(规划) 2.业务申报API 2.1.businessApply【业务申报】

    {"v_interface":"2015987654327","c_project":"NH09A102"," ...