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 |