三、RobotFramework--创建测试用例

声明:本文搬运自官方操作文档,仅用作学习,有错误的地方欢迎指正。
原文链接:RobotFramework--创建测试用例

2.2 创建测试用例

2.2.1 测试用例语法

基本语法

测试用例在可用关键字的测试用例表中构造。关键字可以从测试库或资源文件导入,也可以在测试用例文件本身的关键字表中创建。

测试用例表中的第一列包含测试用例名称。测试用例从行开始,包含此列中包含内容,然后继续执行下一个测试用例名称或表的末尾。表标题和第一个测试之间有一些错误。

第二列通常具有关键字名称。此规则的一个例外是设置关键字返回值中的变量,当第二列(可能也是后续列)包含变量名称,并且关键字名称位于它们之后。在这两种情况下,关键字名称后列都包含指定关键字的可能参数。


image.png

测试用例表中的设置

测试用例也可以有自己的设置。设置名称始终在第二列中,其中关键字通常是,其值在后续列中。设置名称周围有方括号,以将其与关键字区分。下面列出了可用的设置,并在本节的稍后部分对此进行说明。
[Documentation]
用于说明测试用例。
[Tags]
用于标记测试用例。
[Setup], [Teardown]
指定测试设置和拆解。也有同义词 [先决条件][后条件] 分别
[Template]
指定要使用的模板关键字。测试本身将仅包含用作该关键字参数的数据。
[Timeout]
用于设置测试用例超时。超时将在它们自己的部分中讨论。

image.png

设置表中的测试用例相关设置

设置表可以具有以下测试用例相关设置。这些设置主要是前面列出的测试用例特定设置的默认值。
Force Tags, Default Tags
标记 的强制值和默认值。
Test Setup, Test Teardown
测试设置和拆解的默认值。预制条件和后置条件,分别
测试模板
要使用的默认模板关键字。
测试超时
测试用例超时的默认值。超时将在它们自己的部分中讨论。

2.2.2 使用参数

前面的示例已经演示了使用不同参数的关键字,本节更彻底地讨论了这一重要功能。如何实际实现用户关键字和库关键字与不同的参数在单独的部分讨论。

关键字可以接受零个或多个参数,并且某些参数可能具有默认值。关键字接受的参数取决于其实现,通常搜索此信息的最佳位置是关键字的文档。在本节中的示例中,文档预期使用libdoc 工具生成,但在由通用文档工具(如 javadoc )生成的文档上,可以获得相同的信息。

所需参数

大多数关键字都有一定数量的参数,必须始终给出。在关键字文档中,通过指定用逗号分隔的参数名称(如第一、第二、第三个)来表示。在这种情况下,参数名称实际上并不重要,只是它们应该解释参数的用向,但具有文档中指定的参数数量完全相同非常重要。使用太少或太多的参数将导致错误。

下面的测试使用关键字*Create Directory*Copy File。它们的参数指定为pathsource, destination,这意味着他们分别使用一个和两个参数。最后一个关键字*No Operation*``from ``*BuiltIn*不采用任何参数。

image.png

默认值

参数通常具有默认值,可以给出也可以不给出。在文档中,默认值通常与具有等号(如name=default value)的参数名称分开,但使用 Java 实现的关键字可能有多个具有不同参数的关键字实现。所有参数都有可能的默认值,但具有默认值的参数之后不能有任何位置参数。

使用默认值的示例如下例所示,该示例使用具有参数path, content=, encoding=UTF-8 的创建文件关键字。尝试在没有任何参数或三个多个参数的情况下使用它将不起作用。

image.png

可变参数数

也可以创建接受任何数量的参数的关键字。这些参数可以与具有默认值的强制参数和参数组合,但所谓的varargs始终是最后一个参数。在文档中,它们通常有一个星号在参数名称之前,如*varargs,但与Java 库再次出现差异。

删除文件和联接路径关键字在下面的示例中用于参数*pathsbase, *parts, 分别。前者可用于任何数量的参数,但后者至少需要一个参数。

image.png

命名参数

当关键字接受多个具有默认值的参数时,仅使用位置参数重写最后一个参数是不可能的。例如,如果具有参数arg1=aarg2=barg3=c的关键字与下面的测试一样使用,则其参数 arg1arg2都得到一个空字符串作为值而不是默认值。

image.png

为了使只给出一些预期默认值的参数,在Robot Framework2.5 中添加了新的命名参数语法。使用此语法,需要重写其默认值的参数立即在格式argname= value 中所需的参数之后给出。应该使用默认值的参数可以简单地被抛在一起。下面的示例测试演示了实际工作原理,该测试使用与上述示例相同的关键字。在此示例中,未指定的参数将获取其默认值。

image.png

命名参数语法自然可以与接受默认值的参数一起使用,同时当没有参数离开时。这可以使参数含义比仅显示值时更清晰。但是,无法用方式命名所需的参数。此外,不可能先给出命名参数,然后给出 vararg。

名称参数功能的最大限制是,它目前只适用于用户关键字和使用使用静态库 API 或混合库 API的 Python实现的库关键字。将来可能会添加对 Java 库和动态库 API的支持。在此之前,可以创建包装不兼容关键字的用户关键字。

注意
当命名参数语法与用户关键字一起使用时,将给出参数名称而不指定$=修饰。例如,具有参数${arg1}默认的用户关键字,必须像 arg2=重写 那样使用${arg2}秒。

仅当等号之前参数的部分与默认值匹配参数的名称时,才使用命名参数语法。此匹配从给定参数列表的末尾开始,并在没有匹配时停止。在极少数情况下,当存在意外匹配时,可以使用[以] 来转义此语法,如 nomatch = 此处。

注意
参数命名对大小写和空格极为敏感。前者表示,如果您有参数argarg=Arg=ARG=三个为不同的参数,后者表示在=前后不允许有空格

下面的示例演示在不同的方案中使用命名参数,包括在测试库导入中。


image.png

嵌入到关键字名称的参数

指定参数的一种完全不同的方法是将它们嵌入到关键字名称中。此语法至少目前仅受用户关键字支持。

2.2.3 测试用例名称和文档

测试用例名称直接来自测试用例表:它正是输入到测试用例列中的名称。一个测试套件中的测试用例应具有唯一的名称。为此,您还可以在测试本身使用自动变量 $[TEST_NAME]来引用测试名称。每当执行测试时它都可用,包括所有用户关键字,以及测试设置和测试拆解。

[文档]设置允许您为测试用例设置免费文档。该文本显示在命令行输出以及生成的测试日志和测试报告中。

如果文档很长,它可以拆分为多个单元格,这些单元格与空格一起进行。可以使用简单的HTML 格式,并且可以使用变量使文档具有动态性。从Robot Framework2.7开始,如果文档被分成多行,则行本身会使用新行进行。如果行已以新行结尾,或者以转义反斜杠结尾,不添加新行。


image.png

2.2.4 标记测试用例

在Robot Framework中标签是一种简单而强大的机制,用于对测试用例进行分类。标签是自由文本,它们至少可用于以下目的:

  • 标签显示在测试报告、日志中,当然还有测试数据中,因此它们为测试用例提供元数据。
  • 有关测试用例的统计信息(总数、通过、失败)根据标签自动收集。
  • 使用标签,可以包括或排除要执行的测试用例。
  • 使用标签,可以指定哪些测试用例被视为关键。

在本节中,仅介绍如何为测试用例设置标签,下面列出了不同的操作方法。这些方法可以灵活使用。
Force Tags设置表
具有此设置的测试用例文件中的所有测试用例始终得到指定的标记。如果它在测试套件初始化文件中使用,则子测试套件中的所有测试用例都得到这些标记。

Default Tags 设置表
没有自己的 [标记]设置的测试用例获取这些标记。从机Robot Framework 2.5 开始,测试套件初始化文件中不再支持默认标记。

[Tags] 测试用例表
测试用例始终获取这些标记。此外,它不会获取使用默认标记指定的可能标记,因此可以使用空值覆盖默认标记。从Robot Framework 2.5.6 开始,也可以使用值NONE来覆盖默认标记。

*-- settag*命令行选项
除了在其他地方获取的标记外,所有执行的测试用例都使用此选项设置标记。

*Set Tags**Remove Tags*关键字
这些内置关键字可用于在测试执行期间修改标记。

标记是自由文本,但已规范化,以便将其转换为小写,并删除所有空格。如果测试用例多次获得相同的标记,则删除第一个测试用例以外的其他匹配项。可以使用变量创建标记,假设这些变量存在。


image.png

image.png

2.2.5 测试设置和拆解

Robot Framework具有与许多其他测试自动化框架类似的测试设置和拆解功能。简而言之,测试设置是在测试用例之前执行的,测试用例之后执行测试拆解。在Robot Framework设置和拆解只是正常的关键字与可能的参数。

设置和拆解始终是一个关键字。如果他们需要处理多个单独的任务,可以为此创建更高级别的用户关键字。另一种解决方案是使用Robot Framework2.5 中添加的内置关键字*Run Keywords*执行多个关键字。

测试拆解在两个方面是特殊的。首先,它也在测试用例失败时执行,因此它可用于清除必须完成的清理活动,而不管测试用例的状态如何。从Robot Framework 2.5 开始,即使其中一个关键字失败,也会执行拆解中的所有关键字。此失败功能的继续功能也可以与普通关键字一起使用,但默认情况下,它处于内部拆解状态。

在测试用例文件中为测试用例指定设置或拆解的最简单方法是使用"设置"表中的测试设置和测试拆解设置。单个测试用例也可以有自己的设置或拆解。它们使用测试用例表中[Setup] [Teardown] 设置定义,并覆盖可能的测试设置和测试拆解设置。在[Setup] [Teardown] 设置后没有关键字意味着没有设置或拆解。从Robot Framework 2.5.6 开始,也可以使用值NONE来指示测试没有设置/拆解。

image.png

image.png

通常,在创建用例式测试用例时,术语先决条件和后置条件优先于术语设置和拆解。Robot Framework还支持此术语,因此先决条件是设置的同义词和拆解的后置条件。
image.png

要作为设置或拆解执行的关键字的名称可以是变量。通过将关键字名称作为命令行中的变量提供,这便于在不同的环境中进行不同的设置或拆解。

注意
测试套件可以有自己的设置和拆解。套件设置在该测试套件中的任何测试用例或子测试套件之前执行,同样,在它们之后执行套件拆解。

2.2.6 测试模板

测试模板将普通关键字驱动的测试用例转换为数据驱动测试。普通测试用例的正文是根据关键字及其可能的参数构造的,而使用模板的测试用例仅定义模板关键字的参数。以下示例测试用例在功能上完全相同,说明了这一点。


image.png

如上例所示,可以使用 [Template] 设置为单个测试用例指定模板。另一种方法就是在设置表中使用Test Template 设置,在这种情况下,该模板将应用于该测试用例文件中的所有测试用例。[Template] 设置将覆盖"设置"表中的可能模板集, [Template] 空值意味着即使使用测试模板,测试也没有模板。从Robot Framework 2.5.6 开始,也可以使用值NONE来指示测试没有模板。

如果模板用例的正文中包含多个数据行(如下所示),则模板将应用于所有行。这意味着将执行多次相同的关键字,每次执行一次,每行都有数据。模板测试也很特别,因此即使失败,也会执行所有回合。在正常测试中,也可以使用这种"在故障模式继续",但使用模板测试时,该模式将自动打开。


image.png

如果模板与for 循环一起使用,则模板将应用于循环内的所有步骤。在这种情况下,也使用"继续失败模式",这意味着即使存在故障,所有步骤也会使用所有循环元素执行。


image.png

测试模板的主要用例是减少与数据驱动测试的重复。与文件中的所有测试重复相同的关键字,可以仅在"设置"表中使用一次。下一节将更透彻地说明此用法。

注意
测试模板是Robot Framework 2.5 中的新功能。

注意
目前不可能使用变量指定模板关键字。此限制可能在将来的版本中取消。

2.2.7 不同的测试用例样式

有几种不同的方法来编写测试用例。描述某种工作流的测试用例可能以关键字驱动或行为驱动的方式编写。数据驱动样式可用于使用不同的输入数据测试同一工作流。

关键字驱动

工作流测试(如前面举例的登录测试)由多个关键字及其可能的参数构造。其正常结构是,首先将系统引入初始状态(有效登录示例中打开登录页),然后对系统进行操作(输入名称输入密码、提交凭据),最后验证系统的行为是否如预期(欢迎页面应打开)。

数据驱动

编写测试用例的另一种样式是数据驱动方法,其中测试用例只使用一个较高级别的关键字,通常创建为用户关键字,该关键字隐藏实际的测试工作流。当需要使用不同的输入和/或输出数据测试相同的方案时,这些测试非常有用。每次测试都可以重复相同的关键字,但测试模板功能允许指定关键字仅使用一次。


image.png

上述示例有六个单独的测试,每个无效的用户/密码组合一个测试,下面的示例演示了如何只对所有组合进行一个测试。使用测试模板时,即使失败,测试的所有回合都执行,因此这两种样式之间没有真正的功能差异。在上面的示例中,将命名单独的组合,以便更容易地查看它们测试的,但有可能这些测试可能会弄乱统计信息。使用哪种样式取决于上下文和个人偏好。


image.png

提示
在上面的两个示例中,已更改列标题以匹配数据。这是可能的,因为在第一行中,除第一个单元格外的其他单元格将被忽略。

行为驱动

也可以将测试用例编写为非技术项目参与者能看懂的方式。这些通常也是验收测试的一部分,通常称为验收测试驱动开发 (ATDD)。

编写这些需求/测试的一种方法就是行为驱动开发(BDD)推广的"Given-When-Then"样式。在此样式中编写测试用例时,初始状态通常用一个关键字表示,该关键字以关键字 Given 为首,操作以"When"开始,以"Then"为起点的关键字描述操作。如果步骤具有多个操作,可以使用以 And 为标题的关键字。

image.png

忽略Given/When/Then/And前缀

如果找不到名匹配的前缀,则在搜索匹配关键字时删除前缀Given, When, Then和And。这适用于用户关键字和库关键字。例如Given login page is open,在上面的示例中可以实现为用户关键字,带或没有单词Given。忽略前缀还允许使用不同的前缀使用相同的关键字。例如Welcome page should be open 也可以用作And welcome page should be open

将数据嵌入到关键字

在编写具体示例时,能够将实际数据传递给关键字实现是很有用的。用户关键字支持这一点,允许将参数嵌入关键字名称中。

你可能感兴趣的:(三、RobotFramework--创建测试用例)