执行流程

Python/Java学习交流群:369606713


执行流程

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

从顶层测试套件开始执行。如果套件具有测试,则它们将被一对一执行;如果套件具有测试,则它们将以 深度优先 的顺序递归执行。当执行单个测试用例时,它包含的关键字将按顺序运行。通常,如果任何一个关键字失败,则当前测试的执行将结束,但是也可以在失败后继续执行。

Suite setup

如果测试套件具有setup,则会在其测试和子套件之前执行。如果Suite setup通过,则测试执行将继续正常进行。如果失败,则套件及其子套件包含的所有测试用例都标记为失败。

Suite setup通常用于设置测试环境。因为如果Suite setup失败,则不会运行测试,因此可以轻松使用Suite setup来验证环境处于可以执行测试的状态。

Suite teardown

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

Suite teardown通常用于在执行后清理测试环境。为了确保完成所有这些任务,即使它们中的某些失败,也会执行teardown中使用的所有关键字。

Test setup

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

Test teardown

执行完测试用例后,可能会进行Test teardown。无论测试状态如何,以及Test setup是否失败,都将执行该命令。

Suite teardown类似,Test teardown主要用于清理活动。即使它们的某些关键字失败,它们也会被完全执行。

Keyword teardown

用户关键字不能具有setup,但可以具有与其他teardown完全相同的teardown。否则,无论状态如何,都将在执行关键字后执行关键字teardown,即使某些关键字失败,它们也会被完全执行。

执行顺序

测试套件中的测试用例的执行顺序与测试用例文件中定义的顺序相同。

较高级别测试套件中的测试套件将根据文件或目录名称以不区分大小写的 字母顺序 执行。

如果从命令行给出了多个文件和/或目录,则将按照 给定 的顺序执行它们。

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

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

如果套件中测试套件的字母顺序存在问题,那么一个好的解决方法是按要求的顺序分别给它们。

这很容易导致启动命令时间过长,但是参数文件允许每行列出一个文件。

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

通过执行

通常,如果测试用例,setupteardown和所有的关键字都通过了测试,并且没有一个失败,则认为通过了测试。也可以使用BuiltIn关键字Pass ExecutionPass Execution If停止以PASS状态执行并跳过其余关键字。

下面说明通过执行和通过执行的方式(在不同情况下的行为):

  • 当在任何setupteardown(套件,测试或关键字)中使用时,这些关键字将通过该setupteardown。可能会删除启动的关键字。否则不会影响测试执行或状态。
  • setupteardown之外的测试用例中使用时,关键字会通过该特定测试用例。执行可能的测试和关键字teardown
  • 在使用这些关键字之前可能发生的连续失败以及此后执行的teardown失败将使执行失败。
  • 必须给出一条解释消息,说明为什么执行被中断,并且还可以修改测试用例标签。