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格式, 然后是空格分隔的纯文本格式:
避免忽略空格
因为领头的, 收尾的, 以及连续的空格在单元格中都将被忽略, 如果这些空格有需要保留的话, 例如作为关键字的参数, 则必须经过转义. 和避免忽略空单元格类似, 既可以使用反斜杠, 也可以使用 内置变量
${SPACE}
.
${SPACE}
Notes