标签:
测试用例构造测试用例表中可用 关键词。 关键字可以进口 测试库 或 资源 文件 或创建的 关键字表 的测试用例文件 本身。
测试用例表中第一列包含测试用例的名称。 一个 测试用例开始在这一列和行了 继续下一个测试用例名称或表的结束。 它是 之间有一个错误表标题和第一 测试。
第二列通常有关键字的名字。 一个例外 是 从关键字设置变量返回值 ,当第二和 也可能随后列包含变量名和关键字 的名字是位于。 在这两种情况下,列在关键字的名字 包含可能的参数指定的关键字。
*** Test Cases *** Valid Login Open Login Page Input Username demo Input Password mode Submit Credentials Welcome Page Should Be Open Setting Variables Do Something first argument second argument ${value} = Get Some Value Should Be Equal ${value} Expected value
测试用例也可以有自己的设置。 设置名字总是 在第二列关键字通常是和它们的值 在随后的列。 设置名字方括号 他们区分关键字。 列出可用的设置 下面解释之后在这一节中。
示例设置测试用例:
*** Test Cases *** Test With Settings [Documentation] Another dummy test [Tags] dummy owner-johndoe Log Hello, world!
设置表可以有以下相关的测试用例 设置。 这些设置主要是默认值 上市前测试用例的具体设置。
前面的例子已经证明了关键词 不同的参数,本节讨论这个重要 功能更彻底。 如何真正实现 用户 关键字 和 库关键字 用不同的参数是 讨论了在不同的部分。
关键字可以接受零个或多个参数,和一些参数 有默认值。 什么参数关键字接受取决于它 实现,通常最好的地方搜索 信息关键字的文档。 在这个例子中 部分文档将使用生成的 Libdoc工具,但相同的信息是可用的 文档生成工具,如通用文档 javadoc
。
大部分关键词有一定数量的参数,必须始终 考虑到。 在这个用指定关键字的文档 参数名称用逗号分隔 第一,第二, 第三
。 参数名称实际上并不重要,在这种情况下,除了 他们应该解释什么论点,但它是很重要的 有完全相同的数量的参数中指定 文档。 使用太少或太多的争论将导致 错误。
下面的测试使用关键词 创建目录 和 复制 文件 从 操作 图书馆。 他们的论点是 指定为 路径
和 源,目的地
,这意味着 他们把一个和两个参数,分别。 最后一个关键字, 没有操作 从内装式 ,不接受参数。
*** Test Cases *** Example Create Directory ${TEMPDIR}/stuff Copy File ${CURDIR}/file.txt ${TEMPDIR}/stuff No Operation
参数通常可以被给予或有默认值 不是。 在文档中默认值通常是分离的 从参数名称一个等号 name =违约 价值
,但关键字使用Java实现的可能 多种实现 相同的关键字与不同 参数。 它是可能的,所有的参数有默认 值,但不能有任何位置参数后参数 用默认值。
使用下面的例子所示,使用默认值 创建文件 关键字的参数 路径、内容= utf - 8编码=
。 尝试使用它不带任何参数或以上 三个参数将不会工作。
*** Test Cases *** Example Create File ${TEMPDIR}/empty.txt Create File ${TEMPDIR}/utf-8.txt Hyvä esimerkki Create File ${TEMPDIR}/iso-8859-1.txt Hyvä esimerkki ISO-8859-1
也有可能一个字接受任意数量的参数。 这些所谓的 可变参数 可以结合强制参数 和参数使用默认值,但他们总是后 他们。 在之前的文档有星号的论点 名字像 *可变参数
。
例如, 删除文件 和 加入路径 关键字的 的 操作 图书馆有争论 *路径
和 基地,*部分
, 分别。 前者可以使用任意数量的参数,但是 后者要求至少有一个参数。
*** Test Cases *** Example Remove Files ${TEMPDIR}/f1.txt ${TEMPDIR}/f2.txt ${TEMPDIR}/f3.txt @{paths} = Join Paths ${TEMPDIR} f1.txt f2.txt f3.txt f4.txt
命名参数的语法使得用参数 默认值 更多的 灵活,并允许显式标识某一参数值意味着什么。 技术上命名参数完全一样工作 关键字参数 在Python中。
是可能的名字前缀的参数给一个关键字值 与参数的名称 arg =值
。 这是特别 有用当多个参数有默认值, 可能的名字只有一些参数和让别人使用它们的默认值。 例如,如果一个关键词接受参数 __arg1 = a、最长= b,长度= c
, 和它被称为一个参数 长度=覆盖
,参数 __arg1
和 最长
默认值,但是 长度
获得的价值 覆盖
。 如果这听起来复杂, 命名参数 例子 下面希望使它更清楚。
命名参数语法既情况和空间敏感。 前 意味着,如果你有一个论点 参数
,你必须使用它 arg =值
,也不 Arg =值
也不 ARG =值
的工作原理。 后者意味着空间之前是不允许的 =
符号,和可能的空间后,被认为是给定值的一部分。
当使用命名参数的语法 用户的关键字 ,争论 名称必须是没有 $ { }
装饰。 例如,用户 关键字使用参数 $ { __arg1 } =第一,$ {最长} =
必须使用 就像 最长=覆盖
。
使用命名参数后正常位置参数,例如, | | |关键字参数=价值位置|
,不工作。 从机器人Framework 2.8这将导致一个显式的错误。 命名参数的相对顺序无关紧要。
请注意
机器人框架2.8之前是不可能命名参数 没有默认值。
可以使用 变量 指定参数名称和值。 如果该值是一个单身 标量变量 ,它是按原样传递给关键字。 这允许使用任何对象,不仅字符串,价值观也在使用 命名参数的语法。 例如,调用一个关键字 arg = $ {对象}
将变量 $ {对象}
不将它转换为关键字 一个字符串。
如果变量是用于命名参数名称,变量之前解决 匹配的参数名称。 这是机器人框架中的一个新特性 2.8.6。
命名参数语法要求等号是随便写的 在关键字的电话。 这意味着变量单独不能触发 命名参数语法,甚至如果有一个值 foo = bar
。 这是 要记住特别是包装关键字到其他关键词。 例如,如果一个关键词 数量可变的参数 就像 @ { args }
并将他们所有人传递到另一个使用相同的关键字 @ { args }
语法,可能 名叫=参数
语法用于调用方不认可。 下面的示例所示。
*** Test Cases *** Example Run Program shell=True # This will not come as a named argument to Run Process *** Keywords *** Run Program [Arguments] @{args} Run Process program.py @{args} # Named arguments are not recognized from inside @{args}
如果关键词需要接受和通过任何命名参数,必须 接受改变 免费的关键字参数 。 看到 kwargs例子 为 包装器关键字版本,可以通过两个位置参数和命名参数 前进。
使用命名参数语法只有当参数的一部分 在等号匹配关键字的一个参数。 这是可能的 有一个位置参数和一个文本值 foo = quux
, 还有一个论点与名字无关 喷火
。 在这种情况下,参数喷火
要么不正确的值 quux
或者,更有可能的是, 有一个语法错误。
在罕见的情况下,有意外的比赛,是可能的 使用反斜杠字符 逃避 语法就像 foo \ = quux
。 现在的观点会得到一个文本值 foo = quux
。 注意,逃离 不需要如果没有争论的名字吗 喷火
,而是因为它 使情况更显式的,不过它可能是一个好主意。
命名的参数已经解释说,语法使用关键词。 在 此外,它还在工作 导入库 。
命名参数支持 用户的关键字 和大多数 测试库 。 唯一的例外是使用基于Java库 静态库API 。 库文档生成 Libdoc 有一个注意图书馆吗 支持命名参数。
请注意
机器人框架2.8之前命名参数语法并不奏效 使用与测试库 动态库的API 。
下面的例子演示了使用命名参数语法 库关键字,用户关键字,当导入 远程登录 测试库。
*** Settings *** Library Telnet prompt=$ default_log_level=DEBUG *** Test Cases *** Example Open connection 10.0.0.42 port=${PORT} alias=example List files options=-lh List files path=/tmp options=-l *** Keywords *** List files [Arguments] ${path}=. ${options}= List files options=-lh Execute command ls ${options} ${path}
机器人框架2.8添加支持 Python风格免费的关键字参数 ( * * kwargs
)。 这意味着,关键词可以接收所有参数 使用 名称=值
语法和其他参数作为kwargs不一致。
同样是免费的关键字参数支持变量 命名参数 。 在实践中这意味着变量 可以使用的名称和值,但越狱标志必须吗 可见。 例如, foo = $ {酒吧}
和 $ { foo } = $ {酒吧}
是 有效的,只要使用的变量存在。 一个额外的限制是 免费的关键字参数名称必须是字符串。 支持变量 在名字中的一个新特性2.8.6机器人框架,在此之前 变量un-resolved。
最初只免费的关键字参数与基于Python库,但是 机器人框架2.8.2扩展的支持 动态库的API 和机器人框架2.8.3将进一步扩展到基于Java库和 的 远程库接口 。 最后,用户关键字了kwargs支持 在机器人框架2.9。 换句话说, 现在所有的关键词都可以支持kwargs。
作为使用kwargs的第一个例子,让我们看一看 运行过程 关键字的 过程 图书馆。 它有一个签名 命令,*参数,* *配置
,这意味着它需要的命令 执行( 命令
),其参数 数量可变的参数 ( *参数
免费的关键字),最后可选配置参数 参数( * *配置
)。 下面的示例还显示变量 使用免费的关键字参数时完全一样 使用命名参数 语法 。
*** Test Cases *** Using Kwargs Run Process program.py arg1 arg2 cwd=/home/user Run Process program.py argument shell=True env=${ENVIRON}
看到 免费的关键字参数(* * kwargs) 下节 创建测试 库 关于使用kwargs语法的更多信息 您的自定义测试库。
第二个例子,让我们创建一个包装器 用户关键字 为运行 program.py
在上面的例子中。 包装的关键字 运行程序 接受任意数量的参数和kwargs,向前传递 运行过程 在执行命令的名称。
*** Test Cases *** Using Kwargs Run Program arg1 arg2 cwd=/home/user Run Program argument shell=True env=${ENVIRON} *** Keywords *** Run Program [Arguments] @{arguments} &{configuration} Run Process program.py @{arguments} &{configuration}
一个完全不同的方法来指定参数嵌入 为关键字的名字。 支持这种语法 测试库关键字 和 用户的关键字 。
一个测试用例失败如果任何关键字使用失败。 通常这意味着 执行的测试用例是停止,可能的 测试拆卸 执行, 然后继续执行下一个测试用例。 还可以 使用特殊的 可持续的失败 如果不需要停止测试执行。
分配给一个失败的测试用例的错误信息是直接从了 失败的关键字。 错误消息通常是由关键字本身,但是 一些关键字允许配置它们。
在某些情况下,例如当使用可持续失败时, 一个测试用例可以失败很多次了。 在这种情况下最后一个错误消息 通过结合了个人的错误。 很长的错误消息 自动从中间继续削减 报告 更容易阅读。 完整的 错误消息总是可见的 日志 文件作为失败的消息 关键字。
默认错误消息是正常的文本,但是 从机器人Framework 2.8 包含HTML格式 。 这 由开始启用和标记的字符串错误消息吗 * HTML *
。 这个标记将被删除从最终的报告所示的错误消息 和日志。 使用HTML的一个自定义的消息在第二个示例中所示。
*** Test Cases *** Normal Error Fail This is a rather boring example... HTML Error ${number} = Get Number Should Be Equal ${number} 42 *HTML* Number is not my <b>MAGIC</b> number.
测试用例名称直接来自测试用例表:它是 究竟什么是输入到测试用例列。 在一个测试用例 测试套件应该使用唯一的名称。 有关这一点,你也可以 使用 自动变量 $ { TEST_NAME }
在测试 参考测试名称。 这是测试时可用 被执行,包括所有用户的关键词,以及测试设置 和测试拆卸。
的 (文档) 设置允许您设置一个免费的 测试用例文档。 文本命令行所示 输出,以及由此产生的测试记录和测试报告。 可以使用简单 HTML格式 在文档和 变量 可用于制造文档动态。
如果文档分成多个列,细胞在一行 与空间连接在一起。 这主要是有用的,当使用 的 HTML格式 和列是狭窄的。 如果文档是 分裂 到多个行 创建的文档本身 连接使用换行 。 如果一行换行不添加 已经以换行符或结束 逃避反斜杠 。
*** Test Cases *** Simple [Documentation] Simple documentation No Operation Formatting [Documentation] *This is bold*, _this is italic_ and here is a link: http://robotframework.org No Operation Variables [Documentation] Executed at ${HOST} by ${USER} No Operation Splitting [Documentation] This documentation is split into multiple columns No Operation Many lines [Documentation] Here we have ... an automatic newline No Operation
重要的是,测试用例有明确的和描述性的名称,和 在这种情况下,他们通常不需要任何文档。 如果逻辑 的测试用例需要记录时,它通常是一个迹象表明,关键词 在测试用例需要更好的名称,它们是可以被增强, 而不是添加额外的文档。 最后,元数据,比如 环境和用户信息在上面的最后一个例子中,是经常的 更好的使用 标签 。
使用标签在机器人框架是一个简单的,但功能强大的机制 对测试用例进行分类。 标签是免费的文本,他们可以使用 至少以下用途:
在本节中只有解释了如何为测试设置标签 例,下面列出了不同的方式去做。 这些 方法自然可以一起使用。
测试套件初始化文件
, 所有测试用例子测试套件让这些标签。没有一个
覆盖默认的标签。标签是免费的文本,但他们归一化,这样转换 小写和所有的空间都被删除了。 如果一个测试用例得到相同的标签 几次,其他事件比第一个删除。 标签 可以创建使用变量,这些变量存在的假设。
*** Settings *** Force Tags req-42 Default Tags owner-john smoke *** Variables *** ${HOST} 10.0.1.42 *** Test Cases *** No own tags [Documentation] This test has tags owner-john, smoke and req-42. No Operation With own tags [Documentation] This test has tags not_ready, owner-mrx and req-42. [Tags] owner-mrx not_ready No Operation Own tags with variables [Documentation] This test has tags host-10.0.1.42 and req-42. [Tags] host-${HOST} No Operation Empty own tags [Documentation] This test has only tag req-42. [Tags] No Operation Set Tags and Remove Tags Keywords [Documentation] This test has tags mytag and owner-john. Set Tags mytag Remove Tags smoke req-*
用户通常免费使用任何标记在他们的工作环境。 然而,某些标签对机器人有一个预定义的意义 框架本身,为其他目的使用它们可以有意外 结果。 所有特殊标签机器人框架,将会在未来 有一个 机器人-
前缀。 为了避免问题,因此不应该使用任何用户 标签与一个 机器人-
前缀,除非真正激活的特殊功能。
在撰写本文时,唯一特殊的标记 robot-exit
这是 当自动添加到测试 优雅地停止测试执行 。 更多的使用可能会被添加在未来,。
机器人框架也有类似的测试设置和清除功能很多 其他的测试自动化框架。 简而言之,一个测试设置 之前执行一个测试用例,测试执行拆卸 在一个测试用例。 在机器人框架设置和拆解 普通关键字参数。
Setup和teardown总是一个字。 如果他们需要照顾 多个单独的任务,就可以创建更高级的 用户 关键字 用于这一目的。 另一种解决方案是执行多个 关键字使用 内装式 关键字 运行关键字 。
测试拆卸是特别的在两个方面。 首先,它也执行 当一个测试用例失败,因此它可以用来清理活动,必须 不管测试用例的状态。 此外,所有的关键词 拆卸也执行即使其中一个失败。 这继续失败 功能还可以使用正常的关键字,但在拆解 在默认情况下。
最简单的方法来指定为测试用例设置或拆卸 使用测试用例文件 测试设置 和 测试 拆卸 设置表中设置。 单个测试用例可以 也有自己的安装或拆卸。 他们的定义 (设置) 或(拆卸) 设置测试用例 表,他们覆盖 测试设置 和 测试拆卸 设置。 没有关键字之后 (设置) 或 (拆卸) 设置意味着没有 安装或拆卸。 还可以使用价值 没有一个
表明 一个测试没有安装/拆卸。
*** Settings *** Test Setup Open Application App A Test Teardown Close Application *** Test Cases *** Default values [Documentation] Setup and teardown from setting table Do Something Overridden setup [Documentation] Own setup, teardown from setting table [Setup] Open Application App B Do Something No teardown [Documentation] Default setup, no teardown at all Do Something [Teardown] No teardown 2 [Documentation] Setup and teardown can be disabled also with special value NONE Do Something [Teardown] NONE Using variables [Documentation] Setup and teardown specified using variables [Setup] ${SETUP} Do Something [Teardown] ${TEARDOWN}
执行的名称关键字设置或拆解 变量。 这有助于在不同的安装或拆卸 不同的环境给关键字名称作为变量 命令行。
请注意
测试套件可以安装和拆卸的 自己的 。 一套设置或子测试之前执行任何测试用例 套件测试套件,同样一套拆卸 后执行。
测试模板转换正常 关键字驱动 测试用例在 数据驱动的 测试。 而一个关键字驱动测试用例的身体 是由关键词及其可能的参数,测试用例 模板只包含关键字的参数模板。 而不是多次重复相同的关键字/测试和/或所有 测试在一个文件中,可以使用它只每只测试或一次文件。
模板的关键字可以接受正常的位置参数和命名参数, 以及嵌入式关键字名称作为参数。 与其他设置, 不可能使用一个变量定义一个模板。
如何使用关键字接受正常的位置参数作为模板吗 如下面的例子测试用例。 这两个测试 功能完全相同。
*** Test Cases ** Normal test case Example keyword first argument second argument Templated test case [Template] Example keyword first argument second argument
为例说明,可以指定 一个单独的测试用例使用的模板 (模板) 设置。 另一种方法是使用 测试模板 设置表中设置,在这种情况下,应用模板 为所有的测试用例,测试用例文件。 的(模板) 设置覆盖可能的模板中设置设置表,和 一个空值 (模板) 意味着没有测试 模板,即使 测试模板 使用。 也有可能 使用价值 没有一个
表明一个测试没有模板。
如果一个模板化的测试用例有多个数据行身体,模板 适用于所有的行。 这 意味着同样的关键字执行多次,一次数据 在每一行。 模板化测试也特殊,这样所有的轮 即使其中的一个或多个执行失败。 可以使用这个 种 继续失败 模式与正常测试,但是 模板化测试自动模式。
*** Settings *** Test Template Example keyword *** Test Cases *** Templated test case first round 1 first round 2 second round 1 second round 2 third round 1 third round 2
用参数 默认值 或 可变参数 以及使用 命名参数 和 免费的关键字参数 ,使用模板 就像他们的工作。 使用 变量 在参数也 支持正常。
从机器人框架2.8.2、模板支持的一种变体 的 嵌入参数语法 。 与模板语法是这样 关键字,如果模板变量的名字,他们被认为是 参数和占位符替换为实际的参数 使用的模板。 然后使用所产生的关键字没有位置 参数。 这是最好的说明了一个例子:
*** Test Cases *** Normal test case with embedded arguments The result of 1 + 1 should be 2 The result of 1 + 2 should be 3 Template with embedded arguments [Template] The result of ${calculation} should be ${expected} 1 + 1 2 1 + 2 3 *** Keywords *** The result of ${calculation} should be ${expected} ${result} = Calculate ${calculation} Should Be Equal ${result} ${expected}
使用模板嵌入参数时,参数的数量 模板关键字名称必须匹配的参数使用。 参数名称不需要原来的关键字匹配的参数, 不过,也可以使用完全不同的参数:
*** Test Cases *** Different argument names [Template] The result of ${foo} should be ${bar} 1 + 1 2 1 + 2 3 Only some arguments [Template] The result of ${calculation} should be 3 1 + 2 4 - 1 New arguments [Template] The ${meaning} of ${life} should be 42 result 21 * 2
的主要好处嵌入模板参数是使用 显式地指定参数名称。 当使用正常的参数, 同样的效果可以通过命名包含的列 参数。 这是说明的 数据驱动的风格 的例子 下一节。
如果使用模板 for循环 ,申请的模板 在循环的所有步骤。 失效模式的继续使用 也在这种情况下,这意味着执行的所有步骤 所有循环元素即使有故障。
*** Test Cases *** Template and for [Template] Example keyword :FOR ${item} IN @{ITEMS} \ ${item} 2nd arg :FOR ${index} IN RANGE 42 \ 1st arg ${index}
有几种不同的方法测试用例可能会写。 测试 描述某种类型的情况下 工作流 可以写吗 关键字驱动或行为驱动方式。 数据驱动方式可用于测试 相同的工作流不同输入数据。
工作流程测试,等 有效的登录 测试描述 早些时候 ,是由几个关键词及其可能的 参数。 正常的系统结构是第一个 到初始状态( 打开登录页面 在 有效的 登录 例子),然后是对系统(输入 的名字 , 输入密码 , 提交的凭证 ), 最后验证,系统行为 ( 欢迎页面应该开放 )。
另一个风格是编写测试用例 数据驱动的 方法, 测试用例只使用一个更高级的关键词,通常创建一个 用户关键字 ,隐藏实际的测试工作流程。 这些测试是 非常有用当有需要测试相同的场景 不同的输入和/或输出数据。 有可能重复 和每个测试相同的关键字,但是 测试模板 功能 只允许指定关键字使用一次。
*** Settings *** Test Template Login with invalid credentials should fail *** Test Cases *** USERNAME PASSWORD Invalid User Name invalid ${VALID PASSWORD} Invalid Password ${VALID USER} invalid Invalid User Name and Password invalid invalid Empty User Name ${EMPTY} ${VALID PASSWORD} Empty Password ${VALID USER} ${EMPTY} Empty User Name and Password ${EMPTY} ${EMPTY}
提示
命名列在上面的示例中使测试更容易 理解。 这是有可能的,因为标题行 除了第一个细胞 被忽略 。
上面的例子中有六个独立的测试,一个用于每一个无效的 用户/密码组合,下面的例子说明了如何 只有一个测试的所有组合。 当使用 测试 模板 在测试执行,所有的轮即使有 失败,所以没有真正的功能这两个的区别 风格。 在上面的例子中单独命名所以组合 容易看到他们测试,但是有可能大量的 这些测试可能乱七八糟的统计数据。 使用哪个风格取决于 环境和个人喜好。
*** Test Cases *** Invalid Password [Template] Login with invalid credentials should fail invalid ${VALID PASSWORD} ${VALID USER} invalid invalid whatever ${EMPTY} ${VALID PASSWORD} ${VALID USER} ${EMPTY} ${EMPTY} ${EMPTY}
也可以写测试用例要求也非技术 项目干系人必须理解。 这些 可执行的要求 是一个 墙角石的过程通常被称为 验收测试驱动开发 (ATDD)或 规范的例子 。
写这些需求/测试的一种方法 Given-When-Then 风格 推广的 行为驱动开发 (BDD)。 在编写测试用例 这种风格,初始状态通常是表示关键字开始 词 鉴于 与描述的行为是关键字开始当 和关键字开始的期望 然后 。 关键字开始 和 或 但 可以使用如果一个步骤 比一个行动。
*** Test Cases *** Valid Login Given login page is open When valid username and password are inserted and credentials are submitted Then welcome page should be open
前缀 鉴于 , 当 , 然后 , 和 和 但 到匹配的关键字搜索时,如果没有匹配的全名吗 是发现。 这是对图书馆用户关键词和关键词。 例如, 打开登录页面 在上面的例子中可以实现 用户关键词要么有或没有这个词 鉴于 。 忽略前缀 还允许使用相同的关键字与不同的前缀。 例如 欢迎页面应该开放 也可以用作 和欢迎页面 应该是开放的 。
请注意
忽略 但 前缀是新的2.8.7机器人框架。
当编写具体的例子是很有用的可以通过实际数据 关键字实现。 支持这种通过允许用户关键词 嵌入 参数为关键字的名字 。
标签:
原文地址:http://www.cnblogs.com/kuihua/p/5397306.html