3.2测试执行

本节描述如何执行从解析的测试数据创建的测试套件结构,如何在失败后继续执行测试用例,以及如何正常停止整个测试执行。

3.2.1执行流程

执行套房和测试

测试用例总是在测试套件中执行。从测试用例文件创建的测试套件直接进行测试,而从目录创建的套件具有子测试套件,这些套件具有测试或他们自己的子套件。默认情况下,在执行套件中的所有测试运行,但也可以选择测试使用的选项--test,--suite,--include和 --exclude。不包含测试的套件将被忽略。

执行从顶级测试套件开始。如果套件具有测试,则它们是逐个执行的,如果它具有套件,则它们以深度优先顺序递归执行。执行单个测试用例时,它包含的关键字按顺序运行。通常,如果任何关键字失败,则当前测试的执行结束,但也可能 在失败后继续。以下各节将讨论确切的执行顺序以及可能的设置和拆卸如何影响执行。

设置和拆卸

可以在测试用例和测试套件级别定义设置和拆卸。

套房设置

如果测试套件有设置,则在测试和子套件之前执行。如果套件设置通过,则测试执行将继续正常进行。如果失败,套件及其子套件标记失败的所有测试用例都会失败,并显示父套件的安装失败。。不执行子测试套件中的测试和可能的套件设置和拆卸。

套件设置通常用于设置测试环境。因为如果套件设置失败,则不运行测试,因此很容易使用套件设置来验证环境是否处于可以执行测试的状态。

套房拆解

如果测试套件有拆卸,则会在所有测试用例和子套件之后执行。无论测试状态如何,即使匹配的套件设置失败,也会执行套件拆解。如果套件拆卸失败,则套件中的所有测试都会在报告和日志中标记为失败。

套件拆解主要用于在执行后清理测试环境。为了确保完成所有这些任务,即使其中一些关键字失败,也会执行拆解中使用的所有关键字。

测试设置

可能的测试设置在测试用例的关键字之前执行。如果设置失败,则不执行关键字。测试设置的主要用途是为特定测试用例设置环境。

测试拆解

在测试用例执行后执行可能的测试拆卸。无论测试状态如何,以及测试设置是否失败,都会执行它。

与套件拆解类似,测试拆卸主要用于清理活动。即使他们的一些关键字失败,它们也会被完全执行。

执行顺序

测试套件中的测试用例的执行顺序与测试用例文件中定义的顺序相同。更高级别测试套件内的测试套件基于文件或目录名称以不区分大小写的字母顺序执行。如果从命令行给出多个文件和/或目录,则按照给定的顺序执行它们。

如果需要在目录中使用某个测试套件执行顺序,则可以在文件和目录名称中添加01和 02之类的前缀。如果这些前缀与具有两个下划线的套件的基本名称分开,则它们不包含在生成的测试套件名称中:

  1. 01__my_suite.html -> My Suite
  2. 02__another_suite.html -> Another Suite

如果套件内的测试套件的字母顺序存在问题,那么一个好的解决方法是按要求的顺序单独提供它们。这很容易导致启动命令过长,但参数文件允许每行很好地列出一个文件。

也可以使用--runmode选项随机化执行顺序。

3.2.2继续失败

通常,当任何关键字失败时,测试用例会立即停止。如果被测系统处于不稳定状态,此行为会缩短测试执行时间并防止后续关键字挂起或以其他方式导致问题。这具有以下缺点:通常后续关键字将提供关于系统状态的更多信息。

在Robot Framework 2.5之前,处理故障以便不立即终止测试执行的唯一方法是使用BuiltIn关键字 运行关键字并忽略错误并运行关键字和期望错误。为此目的使用这些关键字通常会给测试用例增加额外的复杂性,并且在Robot Framework 2.5中添加了以下功能,以便在故障后继续更容易。

关键字的特殊失败

库关键字使用异常报告失败,并且可以使用特殊异常来告知核心框架,无论失败,执行都可以继续。如何创建这些异常在测试库API章节中进行了解释。

当测试结束并且存在一个或多个可持续故障时,测试将标记为失败。如果存在多个故障,则将在最终错误消息中枚举所有故障:

  1. Several failures occurred:
  2.  
  3. 1) First error message.
  4.  
  5. 2) Second error message ...

如果在可持续故障之后发生正常故障,则测试执行也结束。同样在这种情况下,所有失败都将列在最终的错误消息中。

失败关键字的返回值(可能分配给变量)始终是Python None。

运行关键字并继续失败关键字

BuiltIn关键字 Run Keyword And Continue On Failure允许将任何故障转换为可持续的故障。这些失败由框架处理,与源自库关键字的可持续故障完全相同。

自动执行拆解后继续执行

为了确保所有清理活动都得到处理,继续失败模式会在测试和套件拆解中自动启动。实际上,这意味着在拆解时,所有级别中的所有关键字始终都会执行。

当测试具有模板时,将执行所有顶级关键字

使用测试模板时,始终会执行所有数据行,以确保测试所有不同的组合。在这种用法中,继续仅限于顶级关键字,并且在其内部,如果存在不可持续的故障,则执行正常结束。

3.2.3优雅地停止测试执行

有时需要在所有测试完成之前停止测试执行,但这样才能创建日志和报告。以下解释如何实现此目的的不同方式。在所有这些情况下,剩余的测试用例都标记为失败。

注意

这些功能中的大多数是Robot Framework 2.5中的新功能。早期版本仅支持ExitOnFailure模式。

按Ctrl-C

在运行测试的控制台中按下Ctrl-C时,将停止执行。在Python上运行测试时,会立即停止执行,但是在Jython中,只有在当前执行的关键字结束后才会结束。

如果再次按下Ctrl-C,则执行立即结束,并且不会创建报告和日志。

使用信号

在类Unix的机器上,可以使用信号INT和TERM终止测试执行。这些信号可以使用kill命令从命令行发送,发送信号也可以很容易地自动化。

信号对Jython的限制与按Ctrl-C相同。同样地,第二信号也强制停止执行。

使用关键字

执行的关键字也可以停止执行。为此目的,有一个单独的致命错误 BuiltIn关键字,并且自定义关键字在失败时可以使用致命异常。

ExitOnFailure模式

如果选项--runmode与值ExitOnFailure一起使用 (不区分大小写),则在关键测试失败并且其余测试标记为失败时,测试的执行会立即停止。

处理拆卸

默认情况下,即使使用上述方法之一停止测试执行,也会执行已启动的测试和套件的拆卸。这允许在不管执行结束的情况下运行清理活动。

从Robot Framework 2.5.2开始,如果使用--runmode SkipTeardownOnExit命令行选项,则在执行停止时会跳过拆卸。如果清理需要花费很多时间,这可能很有用。

Robot Framework(十) 执行测试用例——测试执行的更多相关文章

  1. Robot Framework(十二) 执行测试用例——配置执行

    3.4配置执行 本节介绍可用于配置测试执行或后处理输出的不同命令行选项.与生成的输出文件相关的选项将在下一节中讨论. 3.4.1选择测试用例 通过测试套件和测试用例名称 按标签名称 当没有测试匹配选择 ...

  2. python3+Robot Framework+PyCharm环境部署及执行脚本

    Robot Framework是一个非常优秀的开源关键字驱动自动化测试框架,目前已经支持python2和python3,但是GUI界面RIDE只支持python2,但是python的未来是python ...

  3. Robot Framework(4)- 测试套件的基本使用

    如果你还想从头学起Robot Framework,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1770899.html 前言 因为是基于 ...

  4. Robot Framework 三种测试用例模式

    1.三种测试用例模式 关键字驱动(keyword-driver).数据驱动(data-driver).行为驱动模式(behavior-driver) 2.关键字驱动(keyword-driver)   ...

  5. Robot Framework源码解析(2) - 执行测试的入口点

    我们再来看 src/robot/run.py 的工作原理.摘录部分代码: from robot.conf import RobotSettings from robot.model import Mo ...

  6. Robot Framework(十四) 扩展RobotFramework框架——创建测试库

    4.1创建测试库 Robot Framework的实际测试功能由测试库提供.有许多现有的库,其中一些甚至与核心框架捆绑在一起,但仍然经常需要创建新的库.这个任务并不复杂,因为正如本章所示,Robot ...

  7. Robot Framework - 2 - 创建测试库

    04- 创建测试库--基础概念 Robot Framework 实际的测试能力是由测试库提供的. ***** 支持的编程语言 Robot Framework 自身是用 Python 编写的,能使用 P ...

  8. Robot FrameWork测试案例

    Robot FrameWork是一个自动测试框架,可到官网查看详细介绍. 安装 Robot Framework 本文中的Robot framework安装在Win7 (32 bit) 平台上. 接下来 ...

  9. Robot Framework自定义测试库的作用域的理解

    robot framework中,强大的测试库api支持,用户可根据实际需求定义测试库,导入后可使用自定义库中相应的关键字. 当自定义的测试库是类库,则需要考虑一个问题:类实例.用类实现的库可以有内部 ...

随机推荐

  1. 【WIP】iOS 网络通讯

    创建: 2018/06/05 网络通讯的基础  App Transport Security iOS9以后增加的功能 只允许满足Apple标准的https通信 ● 对ATS进行改动的话发布的审查时有可 ...

  2. 笔记-JavaWeb学习之旅8

    Window对象-定时器方法 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  3. Luogu P1092 虫食算【搜索/剪枝】 By cellur925

    题目传送门 这道题是一道经久不衰的搜索题目,但是开始做的时候我没什么思路==.初始值-1 输出格式 \(naive\)想法 从右往左依次尝试填充数字,把算式当做一个3行\(n\)列的网格.(什么?你问 ...

  4. Android近场通信---NFC基础(二)(转)

    转自 http://blog.csdn.net/think_soft/article/details/8171256 应用程序如何调度NFC标签 当标签调度系统完成对NFC标签和它的标识信息封装的In ...

  5. c3p0连接池下载

  6. A. Office Keys ( Codeforces Round #424 (Div. 1, rated, based on VK Cup Finals) )

    #include <iostream> #include <stdio.h> #include <string.h> #include <algorithm& ...

  7. ERROR: Could not connect to lockdownd, error code -19 -20

    执行命令行 brew install libimobiledevice --HEAD

  8. Caffe实战五(Caffe可视化方法:编译matlab接口)

    接上一篇文章,这里给出配置caffe后编译matlab接口的方法.(参考:<深度学习 21天实战Caffe 第16天 Caffe可视化方法>) 1.将Matlab目录更新至Caffe的Ma ...

  9. IIS7开启目录浏览功能

    IIS7开启目录浏览功能: 在右侧操作中点击启用,并在左侧面板中勾选显示字段.

  10. 转 sqlplus 设置回闪 sqlplus下使用退格backspace回删出现^H的解决办法

    转自 http://blog.csdn.net/chinadm123/article/details/44099351 1.进入sqlplus前设置回删 在进入sqlplus之前,在当前termina ...