3.2测试执行

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

3.2.1执行流程

执行套房和测试

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

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

设置和拆卸

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

套房设置

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

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

套房拆解

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

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

测试设置

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

测试拆解

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

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

执行顺序

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

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

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

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

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

3.2.2继续失败

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

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

关键字的特殊失败

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

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

Several failures occurred:

1) First error message.

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. Git的使用方法与GitHub项目托管方法

    Git的安装 Windows上安装Git 访问网址:https://git-for-windows.github.io/ 点击Download下载,下载后双击安装包进行安装,一直"下一步&q ...

  2. js对象—类型和属性特性

    前言 权威指南中摘要的,工作中用不到的,重要的js基础. 三类对象两类属性 内置对象(native object) 是由ECMScript规范定义的对象或者类.例如:函数,数组,日期,正则... 宿主 ...

  3. MyBatist庖丁解牛(一)

    站在巨人的肩膀上,感谢! https://www.jianshu.com/p/ec40a82cae28?utm_campaign=maleskine&utm_content=note& ...

  4. 命令行媒体处理工具 FFmpeg

    FFmpeg 是一套在命令行界面运行的跨平台媒体处理工具,属于自由软件,常用来对视频音频和图片等媒体文件进行格式转换.分割和合并等,也可录屏录音. 开发语言:C官网:https://www.ffmpe ...

  5. StretchDIBits速度测试(HALFTONE)

    StretchDIBits速度测试(HALFTONE) 下面实验中显示窗口大小为1024*768,拉伸模式设为HALFTONE. 一.单通道图像 (1) 保持图像高度为1024,宽度从24到2024递 ...

  6. JAVA常用知识总结(十二)——数据库(二)

    MySQL主从热备份工作原理 简单的说:就是主服务器上执行过的sql语句会保存在binLog里面,别的从服务器把他同步过来,然后重复执行一遍,那么它们就能一直同步啦. 整体上来说,复制有3个步骤: 作 ...

  7. 084 Largest Rectangle in Histogram 柱状图中最大的矩形

    给出 n 个非负整数来表示柱状图的各个柱子的高度,每个柱子紧挨彼此,且宽度为 1 .您的函数要能够求出该柱状图中,能勾勒出来的最大矩形的面积. 详见:https://leetcode.com/prob ...

  8. code与const void*指针

    关于指针: 当定义int *p时,它也会在内存中给指针变量p分配一个内存单元,假设这个单元在内存的编址为0x1003:此时,0x1003中的值是不确定的,(因为我们没有给指针赋值),当编译器遇到了p= ...

  9. hdu 3686 Traffic Real Time Query System 点双两通分量 + LCA。这题有重边!!!

    http://acm.hdu.edu.cn/showproblem.php?pid=3686 我要把这题记录下来. 一直wa. 自己生成数据都是AC的.现在还是wa.留坑. 我感觉我现在倒下去床上就能 ...

  10. functools模块中的函数

    Python自带的functools模块提供了一些常用的高阶函数,也就是用于处理其它函数的特殊函数.换言之,就是能使用该模块对可调用对象进行处理.functools模块函数概览functools.cm ...