层次结构安排测试用例构建如下:
- 在创建测试用例 测试用例文件 。
- 自动创建一个测试用例文件 测试套件 包含 测试用例文件。
- 一个目录包含测试用例文件形成一个更高级别的测试 套件。 这样一个 测试套件目录 从测试套件创建 案例文件作为它的子测试套件。
- 一个测试套件目录也可以包含其他测试套件目录, 这个层次结构可以根据需要深层嵌套的。
- 测试套件可以有一个特殊的目录 初始化文件 。
除此之外,还有:
- 测试库 包含体现关键词。
- 资源文件 与 变量 和高级 用户的关键字 。
- 变量的文件 提供更灵活的方式来创建变量 资源文件。
支持文件格式
机器人框架中定义的测试数据表格格式,使用 超文本标记语言(HTML),制表符分隔值(TSV), 纯文本或reStructuredText(reST)格式。 这些的细节 格式,以及主要好处和问题,是解释说 在随后的部分。 使用哪种格式取决于上下文, 但纯文本格式建议如果没有特殊需求。
机器人框架选择测试数据的解析器基于文件扩展名。 扩展是不区分大小写的,公认的扩展 . html , . htm 和 名为. xhtml的 对于HTML, . tsv TSV, . txt 和特殊 .robot 为纯文本首要 和 r 恰好。
不同的 测试数据模板 可用于HTML和TSV吗 格式,让它更容易开始编写测试。
请注意
特殊的 .robot 扩展与纯文本文件 支持从2.7.6机器人框架。
HTML格式
HTML文件格式和自由文本周围的支持表。 这使它 可以添加额外的信息,允许创建测试用例文件 测试用例文件看起来像正式的测试规范。 最主要的问题 与HTML格式,使用普通文本编辑器编辑这些文件不是 那么容易。 另一个问题是,HTML与版本不工作 控制系统因为差别造成的变化包含HTML语法 除了更改实际的测试数据。
在HTML文件中,测试数据是在单独的表(见定义的 在下面的例子)。 机器人框架承认这些 测试数据表 基于文本的第一个细胞。 一切外部认可 表将被忽略。
设置 | 价值 | 价值 | 价值 |
---|---|---|---|
图书馆 | 操作 |
|
|
|
|
|
|
变量 | 价值 | 价值 | 价值 |
---|---|---|---|
$ {信息} | 你好,世界! |
|
|
|
|
|
|
测试用例 | 行动 | 论点 | 论点 |
---|---|---|---|
我的测试 | (文档) | 示例测试 |
|
|
日志 | $ {信息} |
|
|
我的关键字 | / tmp |
|
|
|
|
|
另一项测试 | 应该是平等的 | $ {信息} | 你好,世界! |
关键字 | 行动 | 论点 | 论点 |
---|---|---|---|
我的关键字 | (参数) | $ { path } |
|
|
目录应该存在 | $ { path } |
|
编辑测试数据
测试数据可以用哪个编辑器来编辑您的HTML文件 喜欢,但是一个图形编辑器,你可以看到表, 建议。 骑 能读和写HTML文件,但不幸的是吗 外面失去所有HTML格式,也有可能数据测试用例 表。
编码和实体引用
HTML实体引用(例如, ä
) 支持。 另外,可以使用任何编码,它是假设 在数据文件中指定。 正常的HTML文件必须使用元 元素下面的例子:
XHTML文件应该使用XML序言在这个例子:
如果没有指定编码,机器人框架默认使用iso - 8859 - 1。
TSV格式
TSV文件可编辑电子表格程序,因为语法 如此简单,它们很容易通过编程方式产生。 他们也很 容易使用普通文本编辑器来编辑和版本控制,都是他们的目标 但是, 纯文本格式 更好的适合这些目的。
TSV格式可用于机器人框架的所有的测试数据 目的相同的HTML。 在TSV文件中,所有的数据都在一个大 表。 测试数据表 是公认的从一个或多个星号 ( *
),其次是一个正常的表名和一个可选的关闭 星号。 第一个认可表之前的一切都忽略 同样的数据在HTML表外数据。
*设置* | *值* | *值* | *值* |
图书馆 | 操作 |
|
|
|
|
|
|
|
|
|
|
*变量* | *值* | *值* | *值* |
$ {信息} | 你好,世界! |
|
|
|
|
|
|
|
|
|
|
*测试用例* | *行动* | *参数* | *参数* |
我的测试 | (文档) | 示例测试 |
|
|
日志 | $ {信息} |
|
|
我的关键字 | / tmp |
|
|
|
|
|
另一项测试 | 应该是平等的 | $ {信息} | 你好,世界! |
|
|
|
|
|
|
|
|
*关键字* | *行动* | *参数* | *参数* |
我的关键字 | (参数) | $ { path } |
|
|
目录应该存在 | $ { path } |
|
编辑测试数据
您可以创建和编辑TSV文件在任何电子表格程序,如 Microsoft Excel。 保存时选择制表符分隔的格式 文件,记得将文件扩展名 . tsv 。 它是 也不失为一个好办法关掉所有自动修正和配置 该工具将文件中所有的值视为纯文本。
TSV文件相对容易与任何文本编辑器编辑, 特别是如果编辑器支持视觉分离标签 空间。 TSV格式还支持 骑 。
机器人框架解析TSV数据首先分裂的所有内容 行,然后行进入细胞的基础上表格 字符。 电子表格程序有时与引号包围细胞 (例如, “我的价值”
删除)和机器人框架 他们。 引号内的数据翻了一番(例如, “我”“引用”“价值”
),这是正确处理。 如果 您正在使用一个电子表格程序创建TSV数据,你不应该 需要注意这一点,但是如果你创建数据 通过编程,你必须遵循相同的引用公约 电子表格。
编码
TSV文件总是预期使用utf - 8编码。 因为ASCII是 utf - 8的子集,纯ASCII自然是支持。
纯文本格式
纯文本格式很容易使用任何文本编辑器和编辑 他们也在版本控制工作很好。 因为这些好处 它已经成为最常用的数据格式与机器人框架。
纯文本格式在技术上是否则相似 TSV 格式 但细胞之间的分隔符是不同的。 的TSV 格式使用标签,但您可以使用两个纯文本格式 或更多的空间与空间(或管道字符包围 | )。
的 测试数据表 必须有一个或多个星号之前 名字同样的TSV格式。 否则星号和可能的 空间表中头被忽略所以,例如, * * * 设置* * *
和 *设置
以同样的方式工作。 也同样地 之前把一切的TSV格式,第一个表将被忽略。
在纯文本文件选项卡被自动转换为两个 空间。 这允许使用一个标签作为分隔符类似 TSV格式。 不过,请注意,在纯文本格式 多个选项卡被认为是一个分隔符而在 每一个选项卡将分离器TSV格式。
空间分隔的格式
空间用作分隔符的数量各有不同,只要有 至少两个空间,因此可以把数据对齐。 这是一个明显的好处在文本编辑器中编辑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}
因为空间用作分隔符,都必须空 逃了出来 与 $ {空}
变量或一个反斜杠。 否则 处理空白 不是不同的比其他测试数据吗 因为领导,后,必须连续空间 逃脱了。
提示
推荐使用四个关键词之间的空间和参数。
管和空间分隔的格式
最大的问题是视觉空间的分隔的格式 将关键词形式参数可能会非常棘手。 这是一个问题 特别是如果关键词很多参数和/或参数 包含空格。 在这种情况下管道和空间分隔的变体 更好地工作,因为它使细胞边界更加明显。
| *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}
一个纯文本文件可以包含在空间仅和测试数据 space-and-pipe分隔格式,但一行必须总是使用 同样的分离器。 管和空间分隔线是认可的 强制性的领导管,但管道末端的线 可选的。 至少必须有一个空间两边的 管(除了在开头和结尾),但不需要调整 管道如果它让数据更清晰。
不需要逃避空细胞(除了 落后于空 细胞 )当使用管道和空间分隔的格式。 唯一的 是考虑到可能的管道周围的空间 在实际的测试数据必须用反斜杠转义:
| *** Test Cases *** | | | | | Escaping Pipe | ${file count} = | Execute Command | ls -1 *.txt \| wc -l | | | Should Be Equal | ${file count} | 42 |
编辑和编码
最大的一个好处的纯文本格式HTML和TSV 使用正常的文本编辑器编辑它是非常容易。 许多编辑 Eclipse ide(至少,Emacs,Vim,和TextMate软件)也有插件 支持语法高亮显示机器人框架测试数据也可以提供 其他特性,比如关键字补全。 纯文本格式 支持的 骑 。
同样与TSV测试数据,纯文本文件总是预期 使用utf - 8编码。 结果也支持ASCII文件。
公认的扩展
从机器人2.7.6框架,可以保存纯文本 使用一种特殊的测试数据文件 .robot 扩展除了 正常的 . txt 扩展。 新的扩展更容易 区分测试数据文件从其他纯文本文件。
reStructuredText格式
reStructuredText (reST)是一个易于阅读纯文本标记语法 通常用于Python项目的文档(包括 Python本身,以及本用户指南)。 其他文件是最 经常被编译为HTML,但也支持其他的输出格式。
使用reST与机器人框架允许您混合丰富的格式化文档 和测试数据在一个简洁容易处理的文本格式 使用简单的文本编辑器,diff工具,和源代码控制系统。 在实践中它结合了许多纯文本和HTML格式的好处。
当使用其他文件与机器人框架中,有两种方法来定义的 测试数据。 或者你可以使用 代码块 并定义测试用例 使用 纯文本格式 或者你可以使用 表 完全 像你这样的 HTML格式 。
请注意
使用其他文件与机器人框架需要Python docutils 模块安装。
使用代码块
reStructuredText文档可以包含代码示例在所谓的代码块。 当这些文件被编译成HTML或其他格式,代码块 语法突出显示使用 Pygments 。 在标准的其他代码块 开始使用的 代码
指令,但 斯芬克斯 使用 代码块
或 源代码里
代替。 编程语言的名称 代码块作为参数给出的指令。 例如,后 代码块包含Python和机器人框架的例子,分别为:
.. code:: pythondefexample_keyword(): print'Hello, world!' .. code:: robotframework*** Test Cases ***Example TestExample Keyword
当机器人框架解析reStructuredText文件时,它首先搜索 可能的 代码
, 代码块
或 源代码里
块 包含机器人框架测试数据。 如果找到这样的代码块,数据 它们包含写入一个内存中的文件并执行。 以外的所有数据 代码块将被忽略。
测试数据必须定义代码块使用 纯文本格式 。 如以下示例所示,空间和管道分离变异 支持:
Example------- This text is outside code blocks and thus ignored. .. code:: robotframework*** Settings *** Library OperatingSystem*** Variables *** ${MESSAGE} Hello, world!*** Test Cases ***My Test [Documentation] Example testLog ${MESSAGE} My Keyword/tmpAnother TestShould Be Equal ${MESSAGE} Hello, world! Also this text is outside code blocks and ignored. Above block used the space separated plain text format and the block below uses the pipe separated variant. .. code:: robotframework | *** Keyword *** | | | | My Keyword | [Arguments] | ${path} | | | Directory Should Exist | ${path} |
请注意
逃离 在这种格式中使用反斜杠字符正常工作。 不需要双逃跑时使用reST表。
请注意
对测试数据的支持代码块中的一个新特性 机器人2.8.2框架。
使用表格
如果一个恰好与机器人框架文档中不包含代码块 数据,它将包含同样的数据表 的 HTML格式 。 在这种情况下机器人框架编制文档 HTML在内存中并解析它就像解析一个正常的HTML文件。
机器人框架标识 测试数据表 基于文本的第一 细胞和公认的表类型之外的所有内容将被忽略。 的四个测试数据表的一个示例如下所示 使用简单的表和网格表的语法:
Example------- This text is outside tables and thus ignored. ============ ================ ======= ======= 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! ============= ================== ============ ============= Also this text is outside tables and ignored. Above tables are created using the simple table syntax and the table below uses the grid table approach. +-------------+------------------------+------------+------------+ | Keyword | Action | Argument | Argument | +-------------+------------------------+------------+------------+ | My Keyword | [Arguments] | ${path} | | +-------------+------------------------+------------+------------+ | | Directory Should Exist | ${path} | | +-------------+------------------------+------------+------------+
请注意
空细胞简单表的第一列需要转义。 上面的例子中使用 \ 但 . .
也可以使用。
请注意
因为反斜杠字符是一个转义字符在休息, 指定一个反斜杠,这样机器人框架将需要看到它 逃避它与另一个反斜杠 \ \
。 例如, 一个新行字符必须写 \ \ n
。 因为 使用反斜杠 逃离 在机器人框架数据, 指定文字当使用其他表需要双反斜杠 逃离像 c:\ \ \ \ temp
。
生成HTML文件基于其他文件显然每次运行测试 增加了一些开销。 如果这是一个问题,它可以将一个好主意 其他文件的HTML使用外部工具分开,并让机器人框架 使用生成的文件。
编辑和编码
测试数据在reStructuredText文件可以使用任何文本编辑器,编辑 很多编辑器也提供自动语法高亮显示。 其他格式 不支持 骑 ,虽然。
机器人框架需要包含非ascii字符的其他文件 保存使用utf - 8编码。
语法错误在其他源文件
如果恰好文档不是语法正确(一个畸形的表 例如),解析它会失败,没有测试用例可以发现 文件。 当执行一个其他文件,机器人框架将显示错误 在控制台上。 当执行一个目录,这样解析错误 通常被忽略。
从机器人框架2.9.2,错误水平以下 严重的
被忽略 当运行测试,以避免噪声标准指令等 标记。 这也可能隐藏真正的错误,但他们可以看到当处理 正常的文件。
测试数据表
测试数据在下面列出四种类型的表结构。 这些 测试数据表是由表的第一个单元格。 公认的 表名称 设置
, 变量
, 测试用例
, 关键字
。 匹配 不区分大小写,也奇异变异 设置
和 测试用例
被接受。
表 | 用于 |
---|---|
设置 |
1)进口 测试库 , 资源文件 和 变量的文件。
2)定义的元数据 测试套件 和 测试用例 。
|
变量 | 定义 变量 可以使用 其他地方的测试数据。 |
测试用例 | 创建测试用例 从可用的 关键词。 |
关键字 | 创建用户关键字 从现有的 低级的关键词 |
规则解析数据
忽略了数据
当机器人框架解析测试数据,它忽略了:
- 所有表不开始 公认的表名 在第一个单元格。
- 一切在表的第一行除了第一个单元格。
- 第一个表之前的所有数据。 如果数据格式允许数据之间 表,也将被忽略。
- 所有空行,这意味着可以使用这些类型的行 表更具可读性。
- 年底所有空细胞行,除非他们 Escaping。
- 所有单反斜杠( \ 当不使用 Escaping。
- 所有字符后的散列字符(
#
),当它是第一个 一个细胞。 这意味着可以使用标记进入 评论的测试数据。 - 所有格式的HTML /其他测试数据。
当机器人框架忽略了一些数据,这些数据是不可用的 任何报告和结果,此外,大多数工具使用机器人 框架还忽略它们。 添加信息,是可见的 机器人框架输出,把它的文档或其他元数据 测试用例套件或日志的 内装式 关键字 日志 或 评论 。
处理空白
机器人框架处理空白一样他们在HTML处理 源代码:
- 换行、回车和制表符转换为空格。
- 前导和尾随空白在所有细胞将被忽略。
- 多个连续的空格倒塌成一个单一的空间。
除此之外,不换行空格替换为正常的空间。 这样做是为了避免难以调试的错误 不间断空格时不小心使用,而不是一个正常的空间。
如果领先、落后或需要连续空间,他们 Escaping。 换行、回车、标签和不换行空格 创建使用 转义序列 \ n
, r \
, \ t
, \ xA0
分别。
Escaping
转义字符的机器人框架测试数据是反斜杠 ( \ ),另外 内置的变量 $ {空}
和 $ {空间}
通常可以用于转义。 不同的逃逸机制 在下面的章节中讨论。
转义特殊字符
可以使用反斜杠字符转义特殊字符 所以他们的文字值。
字符 | 意义 | 例子 |
---|---|---|
美元\ |
美元符号,从未开始 标量变量 。 | \ $ { notvar } |
\ @ |
在签署,从未开始 变量列表 。 | \ @ { notvar } |
\ % |
百分号,从来没有一个开始 环境变量 。 | \ % { notvar } |
\ # |
散列标志,从未开始 评论 。 | \ #不评论 |
\ = |
等号,永远的一部分 命名参数的语法 。 | 不\ =姓名 |
\ | |
管的角色,而不是一个分隔符 管分离格式 。 | | |运行ps \ | grep xxx | |
\ \ |
反斜杠字符,从未逃脱。 | c:\ \ temp \ \ $ { var } |
形成转义序列
反斜杠字符还允许创建特殊的转义序列 公认为字符,否则很难或不可能创造 在测试数据。
序列 | 意义 | 例子 |
---|---|---|
\ n |
换行符。 | 第一行\ n2nd线 |
r \ |
回车字符 | 文本\ rmore文本 |
\ t |
制表符。 | 文本\ tmore文本 |
\ xhh |
性格与十六进制值 hh 。 |
零字节:\ x00 \ xE4 |
\ uhhhh |
性格与十六进制值 hhhh 。 |
雪人:\ u2603 |
\ Uhhhhhhhh |
性格与十六进制值 hhhhhhhh 。 |
爱酒店:\ U0001f3e9 |
请注意
所有字符串创建的测试数据,包括字符 \ x02
必须显式地转换为Unicode和 如果需要字节字符串。 这个可以做,例如,使用 转换为字节 或 编码字符串字节 关键字 在 内装式 和 字符串 库,分别或 类似的 str(值)
或 value.encode(“utf - 8”)
在Python代码。
请注意
如果使用了无效的十六进制值 x \
, \ u
或 \ U
逃,最终的结果是原来的值 反斜杠字符。 例如, \ xAX
(不是十六进制) \ U00110000
(太大价值)的结果 xAX
和 U00110000
,分别。 这种行为可能会改变 不过,未来。
请注意
内置的变量 $ { \ n }
如果操作系统可以使用吗 需要依赖行结束符( \ r \ n
在Windows和 \ n
其他地方)。
请注意
可能没有转义后的空格字符 \ n
是 忽略了。 这意味着 两条线\ nhere
和 两条线\ n
是等价的。 的动机 是让包装线包含换行当使用多久 使用HTML格式,但同样的逻辑也与其他格式。 一个例外是空格字符 忽视了内部的 扩展变量语法 。
请注意
x \
, \ u
和 \ U
2.8.2转义序列在机器人的新框架。
防止忽略空细胞
如果需要空值作为参数关键字或否则,他们经常 需要逃到阻止他们 忽略了 。 空的细胞 必须逃脱不管测试数据格式,当使用 空间分隔的格式 所有空值必须转义。
空的细胞可以用反斜杠字符或逃走了 内置的变量 $ {空}
。 后者通常是建议 因为它是更容易理解。 一个例外的建议是逃跑 缩进细胞 for循环 使用时用反斜杠 空间分隔的格式 。 所有这些情况都说明在以下 例子首先在HTML,然后在空间分离的纯文本格式:
测试用例 | 行动 | 论点 | 论点 | 论点 |
---|---|---|---|---|
使用反斜杠 | 做某事 | 第一个参数 | \ |
|
使用$ {空} | 做某事 | 第一个参数 | $ {空} |
|
Non-trailing空 | 做某事 |
|
第二个参数 | #不需要转义的HTML |
For循环 | :对于 | $ { var } | 在 | @ {值} |
|
|
日志 | $ { var } | #不需要逃离这里 |
*** 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
防止忽视的空间
因为领导,落后,在细胞和连续空间 忽略了 ,他们 需要逃脱如果他们需要作为参数关键字或其他。 同样当防止忽略空细胞,有可能这样做 使用反斜杠字符或使用 内置的变量 $ {空间}
。
用反斜杠转义 | 逃避与 $ {空间} |
笔记 |
---|---|---|
\主要空间 | $ {空间}主要空间 |
|
尾随空格\ | 落后于空间$ {空间} |
反斜杠后必须空间。 |
\ \ | $ {空间} |
反斜杠需要两边。 |
连续\ \空间 | 连续$ {空间* 3 }空间 |
使用 扩展变量语法 。 |
正如上面的例子所显示的,使用 $ {空间}
变量往往使 测试数据更容易理解。 特别方便的结合 的 扩展变量语法 当一个以上的空间是必要的。
将测试数据几行
如果有更多的数据比容易适合一行,可以使用省略号 ( …
继续前一行。 在测试用例和关键字表, 省略号之前必须至少有一个空的细胞。 在设置和 变量的表,它可以直接放置在设置或变量名。 在所有表中,所有空细胞前省略被忽略。
此外,设置的值,只需要一个值(主要是 文件)可以分成几列。 这些值将 然后加空间当测试数据 解析。 从机器人Framework 2.7、文档和测试 集元数据分成多行 加 和换行 。
上面讨论的所有语法见下面的例子。 在第一个三个表测试数据没有分裂,和 需要以下三个说明少列 分裂几行数据。
设置 | 价值 | 价值 | 价值 | 价值 | 价值 | 价值 |
---|---|---|---|---|---|---|
默认的标签 | tag-1 | tag-2 | tag-3 | tag-4 | tag-5 | tag-6 |
变量 | 价值 | 价值 | 价值 | 价值 | 价值 | 价值 |
---|---|---|---|---|---|---|
@ {列表} | 这 | 列表 | 有 | 相当 | 许多 | 项目 |
测试用例 | 行动 | 论点 | 参数 | 参数 | 参数 | 参数 | 参数 | 参数 |
---|---|---|---|---|---|---|---|---|
例子 | (文档) | 文档 对于这个测试 的情况。 \ n这 可以很 长…… |
|
|
|
|
|
|
|
(标签) | t - 1 | 2 | 条t - 3 | 第四节 | t-5 |
|
|
|
做X | 一个 | 两个 | 三个 | 四个 | 五 | 六个 |
|
|
$ { var } = | 得到X | 1 | 2 | 3 | 4 | 5 | 6 |
设置 | 价值 | 价值 | 价值 |
---|---|---|---|
默认的标签 | tag-1 | tag-2 | tag-3 |
… | tag-4 | tag-5 | tag-6 |
变量 | 价值 | 价值 | 价值 |
---|---|---|---|
@ {列表} | 这 | 列表 | 有 |
… | 相当 | 许多 | 项目 |
测试用例 | 行动 | 论点 | 论点 | 论点 |
---|---|---|---|---|
例子 | (文档) | 文档 | 对于这个 | 测试用例。 |
|
… | 这可以 | 相当 | 长…… |
|
(标签) | t - 1 | 2 | 条t - 3 |
|
… | 第四节 | t-5 |
|
|
做X | 一个 | 两个 | 三个 |
|
… | 四个 | 五 | 六个 |
|
$ { var } = | 得到X | 1 | 2 |
|
|
… | 3 | 4 |
|
|
… | 5 | 6 |
本文是直译了国外的文档,有很多的词汇都不是很清楚