RF字符转义

Robot Framework的测试数据使用反斜杠( \\ )作为转义字符, 此外还增加了 built-in variables _ ${EMPTY} ${SPACE} 经常用来作为转义. 不同的转义策略在下面的小节中详细讨论.

转义特殊字符

反斜杠可以用来转义特殊字符, 这样我们就能使用它们的字面值了.

转义特殊字符

Character Meaning Examples

译注: 上表第2列, 原文是 Dollar sign, never starts a scalar variable. , 感觉直译有些奇怪, 所以这里直接给出这些字符的原来作用是什么, 而后面的例子表示 经过转义后, 这些字符就失去了原来的作用.

反斜杠还可以用来创建特殊的转义序列(escape sequence), 这些转义序列所代表的意义很难(甚至不可能) 在测试数据中通过普通字符表示.

Sequence Meaning Examples

在测试数据中的所有字符串, 包括 \x02 这种字符, 都是Unicode. 如果有需要的话, 必须明确地转换. 转换的方法可以使用 BuiltIn_ 关键字 Convert To Bytes String_ 库中的 Encode String To Bytes . 或者在Python代码中使用类似于 str(value) value.encode('UTF-8') 的方法.

如果在 \x \u \U 转义符后面跟了非法的十六进制数, 则解析的结果是保留原始的字符, 反斜杠除外. 例如, \xAX (X不是十六进制), \U00110000 (值太大了) 解析的结果分别是 xAX U00110000 . 不过, 这种情况可能会在将来有所改变.

如果需要用与操作系统无关的换行符(Windows中是 \r\n , 其它系统是 n ), 可以使用 Built-in variable _${\n}`.

跟在 \n 后面的未经转义的空格会被忽略. 也就是说, two lines\nhere twolines\n here 是等价的. 这样做的动机是在使用HTML格式时, 能包裹包含换行符的长行, 不过同样的逻辑对其它格式也一样. 该规则的一个特殊情况是在 extended variable syntax _ 中的空白符不会忽略.

\x , \u \U 等转义序列在Robot Framework 2.8.2版本新引入.

避免忽略空单元格

如果需要使用空值, 例如作为关键字的参数, 必须明确地转义以避免被框架 忽略. 不管使用哪种数据格式, 空的收尾单元格必须被转义. 当使用 空格分隔的格式时, 所有的空值都必须被转义.

空的单元格既可以使用反斜杠转义, 也可以使用 内置变量 ${EMPTY} . 特别推荐使用后者, 因为更清楚易懂. 一个特殊情况是在 空格分隔的格式中使用 FOR循环时, 缩进的单元格中应使用反斜杠. 所有这些情况都在下面的例子中进行了说明, 先是HTML格式, 然后是空格分隔的纯文本格式:

Test Case Action Argument Argument Argument 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