创建测试数据
测试数据语法
这里的测试数据就是指的测试用例。
测试文件组织
Test data sections
测试用例文件包含这些部分。
支持的文件格式
Suite文件通常使用.robot扩展名,但哪些文件可以被解析是可以配置的。Resource files 也可以使用 .robot 扩展名,但使用专用的 .resource 扩展名是 建议,并可能在未来强制执行。
创建测试用例
测试用例语法
机器人框架用户指南 (robotframework.org)
基础语法:
Test cases是由关键字在test case sections中组织起来的。 关键字可以从 test libraries 或者 resource files中导入, 或者在测试文件中在 keyword section 中定义
Test case section中的设置:
[Documentation] Used for specifying a test case documentation.
[Setup], [Teardown] Specify test setup and teardown.
[Tags] Used for tagging test cases.
[Template] Specifies the template keyword to use. The test itself will contain only data to use as arguments to that keyword.
[Timeout] Used for setting a test case timeout. Timeouts are discussed in their own section.
*** Test Cases ***
Test With Settings[Documentation] Another dummy test[Tags] dummy owner-johndoeLog Hello, world!
标记测试用例
方法一:Test Tags setting in the Settings section
方法二:[Tags] setting with each test case
如
*** Settings ***
Library SeleniumLibrary
Test Tags smoke
*** Test Cases ***
Search keywords in baidu[Tags] smokeOpen Browser url=https://www.baidu.com browser=edgeInput Text //input[@id="kw"] 周杰伦Click Element //input[@id="su"]Sleep 5Close Browser
Test Setup和Test Teardown
test setup在test case之前执行,test teardown在test case之后执行。在RF中,setup和teardown只是有参数的关键字。
test teardow在两方面特殊:首先,在测试用例失败后,teardown仍会执行,所以可以用来进行清理活动,无论测试结果是什么。另外,teardown中所有的关键字都会执行,即使其中的一个关键字执行失败。失败仍继续功能也可以在一般的关键字中使用,但是在teardown中这个功能是默认开启的。
最简单的在测试用例中使用setup和teardown是在Setting部分使用Test Setup和Test Teardown设置。在单个test case中也可以使用[Setup]和[Teardown],并且可以覆盖setting部分中的设置。
*** Settings ***
Library SeleniumLibrary
Test Setup
Test Teardown
*** Test Cases ***
Search keywords in baidu[Tags] smoke[Setup]Open Browser url=https://www.baidu.com browser=edgeInput Text //input[@id="kw"] 周杰伦Click Element //input[@id="su"]Sleep 5[Teardown]Close Browser
Test templates
在Robot Framework(RF)中,测试模板(Test Templates)是一种机制,它允许你为测试用例定义一个固定的测试结构,而测试用例本身则只需提供该结构中所需的具体数据或参数。这有助于在多个测试用例之间重用相同的测试逻辑,从而提高测试的可维护性和一致性。
使用测试模板,你可以创建一个包含多个测试步骤的模板,并在多个测试用例中引用这个模板。每个测试用例只需提供模板所需的具体数据,而无需重复编写相同的测试步骤。
测试模板的定义通常位于测试套件文件(.robot)的*** Settings ***
部分,使用Test Template
关键字进行指定。例如:
*** Settings ***
Test Template Some Template *** Test Cases ***
Case 1 [Template] arg1 arg2 Some value 1 Another value Case 2 [Template] argA argB Value A Value B *** Keywords ***
Some Template [Arguments] ${arg1} ${arg2} Log Starting test with ${arg1} and ${arg2} # 其他测试步骤...
在上面的示例中:
Test Template Some Template
定义了一个名为Some Template
的测试模板。Case 1
和Case 2
是两个测试用例,它们引用了Some Template
测试模板。- 每个测试用例的
[Template]
设置指定了传递给模板的参数。 Some Template
关键字是模板的实现,它接收两个参数${arg1}
和${arg2}
,并包含实际的测试步骤。
当运行测试用例时,Robot Framework 会自动将每个测试用例的参数传递给 Some Template
关键字,并执行该关键字中定义的测试步骤。
测试模板的一个主要优点是,它允许你在多个测试用例之间共享相同的测试逻辑,同时保持测试用例的简洁和可读性。这尤其适用于那些包含多个相同步骤但使用不同数据的测试用例。通过使用测试模板,你可以减少代码冗余,提高测试的可维护性,并更容易地管理测试数据。
不同的测试用例模式
创建测试集
RF的测试用例是使用test case section在suite file或者test case file中创建的。包含测试用例的文件即创建了test suite。(就test suite就是包含多个test case的文件)测试集没有测试用例个数的限制,但建议不要超过 10 个测试用例。
test suite的Setting section包含如下设置:
Name Used for setting a custom suite name. The default name is created based on the file or directory name.
Documentation Used for specifying a suite documentation.
Metadata Used for setting free suite metadata as name-value pairs.
Suite Setup, Suite Teardown Specify suite setup and teardown.
*** Settings ***
Documentation
Metadata
Suite Setup
Suite Teardown
Library SeleniumLibrary
Test Setup
Test Teardown
*** Test Cases ***
Search keywords in baidu[Tags] smoke[Setup]Open Browser url=https://www.baidu.com browser=edgeInput Text //input[@id="kw"] 周杰伦Click Element //input[@id="su"]Sleep 5[Teardown]Close Browser
Suite initialization files
在Robot Framework中,Suite Initialization Files(套件初始化文件)是用于执行测试套件开始前的一系列初始化步骤的文件。这些文件允许你在测试套件开始之前执行一些必要的设置,比如配置测试环境、登录到应用程序、打开数据库连接等。
Suite Initialization Files通常使用.robot
文件扩展名,并且它们位于测试套件目录中。你可以使用*** Settings ***
部分来定义初始化步骤,例如设置变量或导入资源文件。在*** Variables ***
部分,你可以定义将在整个测试套件中使用的变量。此外,你还可以在*** Keywords ***
部分定义一些只在初始化阶段使用的关键字。
下面是一个简单的示例,展示了Suite Initialization Files的基本结构:
*** Settings ***
Suite Setup Open Application
Suite Teardown Close Application *** Variables ***
${SERVER_URL} http://example.com/api *** Keywords ***
Open Application Log Opening the application # 这里可以添加打开应用的代码 Close Application Log Closing the application # 这里可以添加关闭应用的代码 *** Test Cases ***
# 这里定义具体的测试用例
在上面的示例中:
Suite Setup
和Suite Teardown
分别定义了测试套件开始和结束时执行的关键字。在这个例子中,它们分别调用了Open Application
和Close Application
关键字。*** Variables ***
部分定义了一个变量${SERVER_URL}
,它可以在整个测试套件中使用。*** Keywords ***
部分定义了Open Application
和Close Application
这两个关键字,这些关键字包含了初始化测试环境的逻辑。
在实际使用中,Open Application
和Close Application
关键字会包含实际的代码来执行测试环境的初始化和清理工作。这些代码可能包括连接数据库、启动和停止应用程序、登录到系统等。
当Robot Framework运行测试套件时,它会自动执行Suite Initialization Files中定义的Suite Setup
和Suite Teardown
关键字,确保在测试开始前和结束后执行必要的初始化和清理步骤。这有助于确保测试环境的一致性和可预测性,从而提高测试结果的可靠性。
Suite documentation
在Robot Framework中,Suite Documentation(套件文档)是用于描述测试套件内容、目的、设置和测试执行上下文的重要信息。尽管Robot Framework并没有专门提供一个格式化的位置来编写套件级别的文档,但是你可以在测试套件文件的开始部分使用注释和特殊关键字来提供这些信息。
通常,Suite Documentation包含以下内容:
- 测试套件的目的和范围
- 必要的环境设置和依赖项
- 测试数据的来源和格式
- 已知的限制和问题
- 其他对理解和执行测试套件有帮助的信息
*** Settings *** Documentation An example suite documentation with *some* _formatting_. ... Long documentation can be split into multiple lines.
测试集元数据
*** Settings *** Metadata Version 2.0 Metadata Robot Framework http://robotframework.org Metadata Platform ${PLATFORM} Metadata Longer Value ... Longer metadata values can be split into multiple ... rows. Also *simple* _formatting_ is supported.
Suite setup and teardown
*** Settings *** Suite Setup Suite Teardown
变量
Robot Framework User Guide
标量变量
列表变量
字典变量
用户关键字
Robot Framework User Guide
*** Keywords *** Open Login PageOpen Browser http://host/login.htmlTitle Should Be Login PageTitle Should Start With[Arguments] ${expected}${title} = Get TitleShould Start With ${title} ${expected}
位置参数
*** Keywords *** One Argument[Arguments] ${arg_name}Log Got argument ${arg_name}Three Arguments[Arguments] ${arg1} ${arg2} ${arg3}Log 1st argument: ${arg1}Log 2nd argument: ${arg2}Log 3rd argument: ${arg3}
参数默认值
*** Keywords *** One Argument With Default Value[Arguments] ${arg}=default value[Documentation] This keyword takes 0-1 argumentsLog Got argument ${arg}
可变数量参数
*** Keywords *** Any Number Of Arguments[Arguments] @{varargs}Log Many @{varargs}One Or More Arguments[Arguments] ${required} @{rest}Log Many ${required} @{rest}Required, Default, Varargs[Arguments] ${req} ${opt}=42 @{others}Log Required: ${req}Log Optional: ${opt}Log Others:FOR ${item} IN @{others}Log ${item}END