2.1.3 测试数据表

测试数据为下表所示的4种结构。测试数据表通过表中第一个区域被识别。被识别的表名是Settings, Variables, Test Cases, Keywords.匹配区分大小写,并且支持Setting和Test Case的变体。

不同的测试数据表

Table Used for
Settings (1)导入测试库、资源文件和变量文件;(2)定义测试集和测试用例的元数据
Variables 定义可以用于测试数据任何地方的变量
Test Cases 从可用的关键字中创建测试用例
Keywords 通过底层关键字创建用户关键字

2.1.4 数据分析规则

忽略数据

当RF分析测试数据时,以下将被忽略:

  • 第一部分中所有不以可识别表头开始的内容
  • 第一部分除了表第一行之外的任何内容
  • 第一个表之外的所有内容。如果数据表之间插入的数据,也会被忽略
  • 所有用于增加表可读性的空行,也会被忽略
  • 所有行结束时的空单元格也被忽略
  • 所有单个(\)转义符
  • 所有(#)字符后面的字符,被当做注释忽略
  • HTML/reST中格式内容

RF忽略的数据,在结果报告同样不可见,RF调用的工具同样忽略。如果需要在结果中增加一些信息,需要在Builtln的keyword Log或Comment中添加。

空白处理

RF处理空白的方式和HTML源码处理方式相同:

  • 换行符、回车和制表符转换为空格;
  • 所有表格开头和结尾的空白被忽略;
  • 多个连续的空格将合并为一个单一的空格

如果前置或需要连续的空格,需要进行转义。换行符、回车、制表符和非换行空格分别通过\n \r \t和\xA0转义。

转义

RF测试数据中的转义字符为()和内建标量\({EMPTY}和\).

转义特殊字符

转义特殊字符

Character Meaning Examples
\\$ 美元符,当不是scalar变量开头时 \${notvar}
\@ at符合,当不是列表变量开头时 \@{notvar}
\% 百分号,当不是环境变量的开头时 \%{notvar}
\# 井号,当不是commnet开头时 \# not comment
\= 等号,当不是用于命名语法的一部分时 not \=named
\/ 管道符,当不是用于管道分隔格式时 / Run / ps \/ grep xxx /
\\ 反斜杠,不用于转义时 c:\\temp, \\${var}

/代表"|"

转义序列

反斜杠字符也允许创建被识别为字符,否则不能在测试数据来创建特殊的转义序列。

Sequence Meaning Examples
\n 换行符 first line\n2nd line
\r 回车符 text\rmore text
\t 制表符 text\tmore text
\xhh 16进制字符hh null type: \x00, a: \xE4
\uhhhh 16进制字符hhhh snowman: \u2603
\uhhhhhhhh 16进制字符hhhhhhhh love hotel: \U0001f3e9

在测试数据创建的所有字符串,包括系那个\x02,都是Unicode,如果有需要的必须转换为字符串。可以使用内建关键字和字符串库如Convert To Bytes或Encode String To Bytes keywords,或使用str(value)或value.encode('UTF-8').

防止忽略空单元格

如果空格作为关键字或其他类型的参数时,需要进行转义,以免被忽略。空格作为测试数据或分隔格式一部分时,必须要进行转义。 空格可以使用反斜杠或则内建变量${EMPTY}进行转义。通常建议使用后者,后者更容易理解。此建议一个例外情况是当使用分离格式的空格时。

Test Case Action Argument Argument Argument
使用反斜杠 Do Something first arg \
使用${EMPTY} Do Something first arg ${EMPTY}
非尾部空格 Do Something second arg # No escaping needed in HTML
For loop :FOR ${var} IN @{VALUES}
Log ${var} # No escaping needed here either
*** Test Cases ***
Using backslash
    Do Something    first arg    \
Using ${EMPTY}
    Do Something    first arg    ${EMPTY}
Non-trailing empty
    Do Something    ${EMPTY}    second arg    # Escaping needed in space separated format
For loop
    :FOR    ${var}    IN    @{VALUES}
    \    Log    ${var}    # Escaping needed here too

防止忽略空格

由于前置或连续的空格会被忽略,但是当作为关键字或其他类型的参数时就需要进行转义。和单元格处理一样,要么使用反斜线要么使用内建变量${SPACE}

转义示例

Escaping with backslash Escaping with ${SPACE} Notes
\ leading space ${SPACE}leading space
trailing space \ trailing space${SPACE} 反斜线必须在空格后
\ \ ${SPACE} 反斜线需要在两侧
consecutive \ \ speces consecutive${SPACE * 3}spaces 使用扩展变量语法

上面的例子可以看出使用变量比较容易理解,而且可以使用一些扩展变量语法。

将测试数据分隔为多行

如果数据超出了一行,下一行可以使用(...)继续。在测试用例或关键字表格中,省略号前必须有个空单元格。在settings和变量表中,可以直接添加到setting或变量表下面。在所有的表中,省略号前面的空单元都会被忽略。

此外,settings的单一的值可以被分为多列。当测试数据解析时,会把空格分隔的值一起处理。

测试数据没有分隔的表

Seting Value Value Value Value Value Value
Default 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.\n 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
Default 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

by 李鹏