robotframework笔记2

文件和目录

层次结构安排测试用例构建如下:

  • 在创建测试用例 测试用例文件 。
  • 自动创建一个测试用例文件 测试套件 包含 测试用例文件。
  • 一个目录包含测试用例文件形成一个更高级别的测试 套件。 这样一个 测试套件目录 从测试套件创建 案例文件作为它的子测试套件。
  • 一个测试套件目录也可以包含其他测试套件目录, 这个层次结构可以根据需要深层嵌套的。
  • 测试套件可以有一个特殊的目录 初始化文件 。

除此之外,还有:

  • 测试库 包含体现关键词。
  • 资源文件 与 变量 和高级 用户的关键字 。
  • 变量的文件 提供更灵活的方式来创建变量 资源文件。

支持文件格式

机器人框架中定义的测试数据表格格式,使用 超文本标记语言(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文件中,测试数据是在单独的表(见定义的 在下面的例子)。 机器人框架承认这些 测试数据表 基于文本的第一个细胞。 一切外部认可 表将被忽略。

使用HTML格式
设置价值价值价值
图书馆 操作
 
 
 
 
 
 
变量价值价值价值
$ {信息} 你好,世界!
 
 
 
 
 
 
测试用例行动论点论点
我的测试 (文档) 示例测试
 
 
日志 $ {信息}
 
 
我的关键字 / tmp
 
 
 
 
 
另一项测试 应该是平等的 $ {信息} 你好,世界!
关键字行动论点论点
我的关键字 (参数) $ { path }
 
 
目录应该存在 $ { path }
 
编辑测试数据

测试数据可以用哪个编辑器来编辑您的HTML文件 喜欢,但是一个图形编辑器,你可以看到表, 建议。 骑 能读和写HTML文件,但不幸的是吗 外面失去所有HTML格式,也有可能数据测试用例 表。

编码和实体引用

HTML实体引用(例如, ä ) 支持。 另外,可以使用任何编码,它是假设 在数据文件中指定。 正常的HTML文件必须使用元 元素下面的例子:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

XHTML文件应该使用XML序言在这个例子:

<?xml version="1.0" encoding="Big5"?>

如果没有指定编码,机器人框架默认使用iso - 8859 - 1。

TSV格式

TSV文件可编辑电子表格程序,因为语法 如此简单,它们很容易通过编程方式产生。 他们也很 容易使用普通文本编辑器来编辑和版本控制,都是他们的目标 但是, 纯文本格式 更好的适合这些目的。

TSV格式可用于机器人框架的所有的测试数据 目的相同的HTML。 在TSV文件中,所有的数据都在一个大 表。 测试数据表 是公认的从一个或多个星号 ( ),其次是一个正常的表名和一个可选的关闭 星号。 第一个认可表之前的一切都忽略 同样的数据在HTML表外数据。

使用TSV格式
*设置* *值* *值* *值*
图书馆 操作
 
 
 
 
 
 
 
 
 
 
*变量* *值* *值* *值*
$ {信息} 你好,世界!
 
 
 
 
 
 
 
 
 
 
*测试用例* *行动* *参数* *参数*
我的测试 (文档) 示例测试
 
 
日志 $ {信息}
 
 
我的关键字 / 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

 

本文是直译了国外的文档,有很多的词汇都不是很清楚

posted @ 2016-04-11 10:09  七月的尾巴_葵花  阅读(3097)  评论(1编辑  收藏  举报