robotframework笔记20

配置执行

选择测试用例

机器人框架提供了几个选择的命令行选项 执行测试用例。 也工作在相同的选项 后处理输出与 Rebot 

通过测试套件和测试用例的名称

测试套件和测试用例可以选择通过他们的名字的命令 行选项 ——套件(- s) 和 ——测试(- t) , 分别。 这两个选项可以多次使用 选择几个测试套件或案例。 这些选项的参数 情况下,space-insensitive也可以 简单的 模式 匹配多个名字。 如果 ——套件 和 ——测试 选项,只在匹配的测试用例套件 选择匹配的名称。

--test Example
--test mytest --test yourtest
--test example*
--test mysuite.mytest
--test *.suite.mytest
--suite example-??
--suite mysuite --test mytest --test your*

使用 ——套件 选择是或多或少一样执行 适当的测试用例文件或目录。 一个主要的好处是 可能选择套件基于母公司套件。 的语法 父母和孩子是指定的套件名称分开 一个点。 在这种情况下,可能的setup和teardown父母 套件执行。

--suite parent.child
--suite myhouse.myhousemusic --test jack*

选择单个测试用例的 ——测试 选择是非常 实际在创建测试用例,但运行测试时相当有限 自动。 的 ——套件 选项可能是有用的 情况下,但总的来说,选择测试用例通过标记名称 灵活。

通过标签名称

有可能包括和排除测试用例 标签 名字的 ——包括(我) 和 ——排除(e) 选项,分别。 如果 ——包括 选择使用,只有测试用例有一个匹配 选择标签, ——排除 有一个选择测试用例 匹配的标记。 如果使用了两个,只测试一个标签 匹配前的选择,而不是一个标签匹配的后者, 被选中。

--include example
--exclude not_ready
--include regression --exclude long_lasting

这两个 ——包括 和 ——排除 可以使用几个 次匹配多个标签。 在这种情况下一个测试被选中 如果它有一个标签匹配任何包含标记,也没有标签 匹配任何排除标签。

除了指定标签完全匹配,可以使用 标记模式 在哪里 和 吗? 通配符, 和 或 不 运营商可用于 结合个人标签或模式:

--include feature-4?
--exclude bug*
--include fooANDbar
--exclude xxORyyORzz
--include fooNOTbar

选择测试用例,标记是一种非常灵活的机制,允许 许多有趣的可能性:

  • 测试之前执行其他测试的子集,通常被称为烟雾 测试,可以标记 烟 和执行 ——包括烟 
  • 未完成的测试可以致力于与一个标签版本控制等 not_ready 和排除在测试执行 ——排除not_ready 
  • 测试可以标记 sprint——< num > ,在那里 < num > 指定当前sprint的数量 执行所有的测试用例后,只包含一个单独的报告 可以生成某个sprint的测试(例如, rebot ——包括sprint-42 output.xml )。

重新执行失败的测试用例

命令行选项 ——rerunfailed(- r) 可以用来选择所有失败了 测试从早期 输出文件 re-execution。 这个选项是有用的, 例如,如果运行所有测试需要很长时间和一个希望 迭代修复失败的测试用例。

robot tests                             # first execute all tests
robot --rerunfailed output.xml tests    # then re-execute failing

幕后这个选项选择的失败的测试 选择单独的 ——测试 选择。 进一步是可能的 通过使用微调的列表选择测试 ——测试 ——套件 ——包括 和 ——排除 选项。

使用一个输出不是来自执行相同的测试运行 现在造成未定义的结果。 此外,这是一个错误如果输出 不包含任何失败的测试。 使用一种特殊的价值 没有一个 作为输出 一样是不指定这个选项。

提示

Re-execution结果和原始结果 合并在一起 使用 ——合并 命令行选项。

请注意

重新执行失败的测试是机器人Framework 2.8中的一个新特性。 之前被任命为机器人框架2.8.4选项 ——runfailed 。 旧的名字仍然有效,但是它在未来将被删除。

当没有测试匹配选择

默认情况下在没有测试匹配选择条件测试执行失败 这样的一个错误:

[ ERROR ] Suite 'Example' with includes 'xxx' contains no test cases.

因为没有输出是生成的,这种行为可以有问题如果测试 自动执行和结果处理。 幸运的是一个命令行 选项 ——RunEmptySuite 可用于套件执行力 在这种情况下。 结果正常输出创建但显示零 执行测试。 可以使用相同的选项也改变了行为 一个空的目录或文件不含测试执行测试用例。

类似的情况也发生在处理输出文件 Rebot 。 有可能是没有测试匹配过滤标准或使用 输出文件中不含测试开始。 默认情况下执行 没有室内可容纳在这些情况下,但它有一个单独的——ProcessEmptySuite 选项,可以用来改变行为。 在实践中该选项一样工作 ——RunEmptySuite 当 运行测试。

请注意

——ProcessEmptySuite 2.7.2选项添加机器人框架。

设定临界

测试执行的最终结果是基于确定的 关键的测试。 如果一个关键的测试失败,整个测试运行 被认为是失败了。 另一方面,非关键的测试用例 失败,总体状况仍被视为通过。

所有测试用例被认为是关键的默认,但这可以改变 与 ——关键(- c) 和 ——被(- n) 选项。 这些选项指定哪些测试是至关重要的 基于 标签 类似地, ——包括 和 ——排除 是用来 通过标签来选择测试 。 如果只有 ——关键 ,与一个测试用例 匹配标签是至关重要的。 如果只有 ——被 使用, 测试没有一个匹配的标记是至关重要的。 最后,如果两者都是 使用,只测试一个关键标记但是没有一个非关键标记 至关重要的。

这两个 ——关键 和 ——被 同样也支持 标签 模式 作为 ——包括 和 ——排除 。 这意味着模式 匹配的情况下,空间,强调不敏感, 和 吗? 支持通配符, 和 或 和 不 运营商可以用来创建相结合的模式。

--critical regression
--noncritical not_ready
--critical iter-* --critical req-* --noncritical req-6??

最常见的用例设置临界测试用例 没有准备好或测试功能仍在发展 测试执行。 这些测试也可以排除在外 测试执行的 ——排除 选择,但 包括非关键测试使您能够看到 他们开始通过。

测试时临界集 没有存储任何地方执行。 如果你想保持相同的临界 当 后处理输出 用,室内可容纳你需要 使用 ——关键 和/或 ——被 还用它:

# Use rebot to create new log and report from the output created during execution
robot --critical regression --outputdir all tests.robot
rebot --name Smoke --include smoke --critical regression --outputdir smoke all/output.xml

# No need to use --critical/--noncritical when no log or report is created
robot --log NONE --report NONE tests.robot
rebot --critical feature1 output.xml

设置元数据

设置名称

当机器人框架分析测试数据, 创建测试套件的名称 从文件和目录的名称 。 顶级测试套件的名称 然而,可以被覆盖命令行选项 ——名称(- n) 。 强调了在给定的名称转换为 自动空间,和文字的名字大写。

设置文档

除了 定义文档的测试数据 、文档 的顶级套房可以从命令行得到 选项 ——医生(- d) 。 强调了在给定的文档 转换为空间,它可能包含简单吗 HTML格式 

设置免费的元数据

免费测试套件的元数据 也可以从命令行得到的吗 选项 ——元数据(- m) 。 参数必须在格式 名称:值 ,在那里 的名字 元数据集的名称 价值 是它的价值。 名称和值转换为下划线 空间,后者可能包含简单 HTML格式 。 这个选项可以 使用几次设置多个元数据。

设置标签

命令行选项 ——settag(g) 可用于设置 给定的标记所有执行测试用例。 可以使用这个选项 几次设置多个标签。

配置在哪里搜索库和其他扩展

当机器人框架进口 测试库 侦听器 或其他 基于Python的扩展,它使用Python解释器模块导入 从系统包含扩展。 位置模块的列表 寻找的是叫什么 该模块搜索路径 ,其内容可以 使用不同的配置方法在这一节中解释。 当导入Java库或者其他扩展基于Jython,Java 类路径使用除了正常的模块搜索路径。

机器人框架使用Python的模块搜索路径也在导入 资源 和变量文件 如果指定的路径不直接匹配任何文件。

该模块搜索路径设置正确,以便库和其他 扩展是一个要求成功的测试执行。 如果 你需要定制它使用下面的方法解释说,这是经常 要创建一个自定义一个好主意 启动脚本 

位置自动模块搜索路径

Python解释器有自己的标准库以及一个目录 第三方模块是自动安装的模块搜索 路径。 这意味着测试库 包装使用Python的包装 系统 会自动安装,这样就可以进口的没有 任何额外的配置。

PYTHONPATH环境 JYTHONPATH 和 IRONPYTHONPATH

Python,Jython和IronPython阅读额外的位置添加到 该模块搜索路径 PYTHONPATH环境 JYTHONPATH 和 IRONPYTHONPATH 环境变量,分别。 如果你想 指定多个位置在其中任何一个,你需要分开 冒号在类unix机器上的位置(如。 / opt / libs:$ HOME / testlibs )和Windows上的分号(如 D:\ libs % HOMEPATH % \ testlibs )。

环境变量可以永久系统范围或者配置 他们只影响一个特定的用户。 或者他们可以暂时设置 在运行一个命令之前,在自定义的东西非常好用 启动脚本 

请注意

机器人Framework 2.9,之前的内容 PYTHONPATH环境 环境 变量被添加到模块搜索路径框架本身 当运行在Jython和IronPython。 现在不做 了, JYTHONPATH 和 IRONPYTHONPATH 必须使用 这些翻译。

使用 ——pythonpath环境 选项

机器人框架有一个单独的命令行选项 ——pythonpath(- p) 将位置添加到模块搜索路径。 虽然选项名称 Python这个词,它的工作原理也在Jython和IronPython。

可以由多个位置用冒号分隔他们,不管 操作系统,或者多次使用这个选项。 给定的路径 也可以是一团模式匹配多个路径,但它通常 需要 逃了出来 

例子:

--pythonpath libs
--pythonpath /opt/testlibs:mylibs.zip:yourlibs
--pythonpath mylib.jar --pythonpath lib/STAR.jar --escape star:STAR

配置 sys.path 以编程方式

Python解释器将他们使用的模块搜索路径存储为字符串的列表 在 sys.path 属性。 在执行这个列表可以动态更新,更改 考虑下次进口。

Java类路径

当库中实现Java与Jython进口,他们可以 在Jython中正常的模块搜索路径或 Java类路径 。 最 常见的方式来改变路径的设置 类路径 环境变量 同样作为 PYTHONPATH环境 JYTHONPATH或 IRONPYTHONPATH 。 或者可以使用Java的 - cp 命令行选项。 这个选项不接触 机器人 跑脚本 ,但这是 可以使用Jython通过添加 - j 前缀像 jython -J-cp例子。 jar - m机器人。 运行tests.robot 

使用独立的JAR分布时,类路径中必须设置一个 有些不同,由于这一事实 java jar 命令不支持 的 类路径 环境变量和 - cp 选择。 有 两种不同的方式来配置类路径:

java -cp lib/testlibrary.jar:lib/app.jar:robotframework-2.9.jar org.robotframework.RobotFramework tests.robot
java -Xbootclasspath/a:lib/testlibrary.jar:lib/app.jar -jar robotframework-2.9.jar tests.robot

设置变量

变量 可以从命令行设置 单独 使用 ——变量(- v) 选择或通过 变量的文件 与 ——variablefile(- v) 选择。 变量和变量 文件解释在不同的章节,但下面的例子 说明如何使用这些选项:

--variable name:value
--variable OS:Linux --variable IP:10.0.0.42
--variablefile path/to/variables.py
--variablefile myvars.py:possible:arguments:here
--variable ENVIRONMENT:Windows --variablefile c:\resources\windows.py

排练

机器人框架支持所谓的 排练 测试模式 正常运行,但关键字来自测试库 不执行。 干燥的运行模式可用于验证 测试数据,如果干运行通过,数据应该是语法 正确的。 这个模式使用触发选项 ——dryrun 

演习执行可能会失败,有以下原因:

  • 没有发现使用关键字。
  • 使用关键字与错误的数量的参数。
  • 使用用户关键字无效语法。

除了这些失败,正常 执行错误 所示, 例如,当测试库或资源文件不能进口 解决。

请注意

干燥的运行模式不验证变量。 这 限制可能在将来的版本中取消。

随机的执行顺序

测试执行的顺序可以随机选择 ——随机<什么>(<种子>): ,在那里 <什么> 是下列之一:

测试
测试用例在每个测试套件以随机的顺序执行。
套房
所有测试套件执行在一个随机的顺序,但里面的测试用例 套件运行的顺序定义。
所有
测试用例和测试套件都以随机的顺序执行。
没有一个
测试的执行顺序和套房都不是随机的。 这个值可以用来覆盖前面的值集 ——随机 

从机器人2.8.5框架,它可以给一个定制的种子 初始化随机发生器。 这是非常有用的,如果你想重新运行测试 使用相同的顺序。 种子作为价值的一部分 ——随机 在格式 < >:<种子> 它必须是一个整数。 如果没有种子,它是随机生成的。 顶级执行测试 套件自动获得 元数据 命名 随机 告诉两个 什么是随机的,种子被使用。

例子:

robot --randomize tests my_test.robot
robot --randomize all:12345 path/to/tests

编程修改测试数据

如果提供的内置功能修改测试数据之前执行 是不够的,机器人框架2.9和更新提供了一个可以做什么 自定义编程方式修改。 这是通过创建完成 模型修改器,使用激活它——prerunmodifier 选择。

模型修改器应该能够遍历实现为游客 可执行测试套件结构并根据需要修改它。 访问者 接口的一部分解释 机器人框架API文档 ,它可能改变执行 测试套件 测试用例 和 关键字 使用它。 下面的示例应该给一个想法 如何使用模型修改器,这个功能是多么强大。

from robot.api import SuiteVisitor


class SelectEveryXthTest(SuiteVisitor):
    """Visitor that keeps only every Xth test in the visited suite structure."""

    def __init__(self, x, start=0):
        self.x = int(x)
        self.start = int(start)

    def start_suite(self, suite):
        """Modify suite's tests to contain only every Xth."""
        suite.tests = suite.tests[self.start::self.x]

    def end_suite(self, suite):
        """Remove suites that are empty after removing tests."""
        suite.suites = [s for s in suite.suites if s.test_count > 0]

    def visit_test(self, test):
        """Save time to avoid visiting tests and their keywords."""
        pass

当模型修改器使用在命令行上使用 ——prerunmodifier 选项,它可以指定的名称 修饰符修饰符的类或路径文件。 如果修饰符 作为一个类名,必须在包含类的模块 模块搜索 路径 ,如果模块名称和类名不同,给定的 名称必须包括 module.ModifierClass 。 如果修饰符 路径,类名必须与文件名相同。 这对于大多数部分 工作就像当 指定一个测试库导入 

如果一个修饰词需要参数,就像上面的例子一样,他们可以 后修饰符指定的名称或路径使用冒号( )或 分号( )作为分隔符。 如果两个值中使用,一分之一 被认为是实际的分离器。

例如,如果上面的模型修改器可以在一个文件中 SelectEveryXthTest.py ,它可以是这样的:

# Specify the modifier as a path. Run every second test.
robot --prerunmodifier path/to/SelectEveryXthTest.py:2 tests.robot

# Specify the modifier as a name. Run every third test, starting from the second.
# SelectEveryXthTest.py must be in the module search path.
robot --prerunmodifier SelectEveryXthTest:3:1 tests.robot

如果需要多个模型修改器,他们可以通过使用指定 的 ——prerunmodifier 多次选择。 如果类似的修改 需要在创建结果之前, 编程式的修改结果 可以使用吗 ——prerebotmodifier 选择。

控制控制台输出

有各种各样的命令行选项来控制测试的执行 在控制台上。

控制台输出类型

整个控制台输出类型设置的 ——控制台 选择。 它支持以下不区分大小写的值:

详细的
每一个测试套件和测试用例单独报告。 这是 默认值。
虚线
只显示 。 通过测试, 对于非关键失败测试, 对失败的关键测试, 跳过,因为测试 测试执行退出 。 失败的关键测试单独列出 后执行。 这个输出类型很容易看到有什么 失败在执行期间,即使会有很多测试。
安静的
没有输出,除了 错误和警告 
没有一个
没有任何输出。 当创建一个自定义输出使用有用, 例如, 听众 

单独的方便选择 ——点(-)。 和 ——安静 的快捷键 ——控制台点缀 和 ——控制台安静 ,分别。

例子:

robot --console quiet tests.robot
robot --dotted tests.robot

请注意

——控制台 ——点缀 和 ——安静 在机器人Framework 2.9新选项。 在此之前输出 总是在当前的一样吗 详细的 模式。

控制台宽度

测试执行的宽度可以使用设置在控制台输出 的选项 ——consolewidth(- w) 。 默认的宽度是78个字符。

提示

在许多类unix机器可以使用方便 美元列 环境变量如 ——consolewidth美元列 

请注意

机器人框架2.9之前这个功能被启用 ——monitorwidth 选项,第一次被弃用, 现在删除。 简单的选择 - w 以同样的方式工作 在所有版本。

控制台的颜色

的 ——consolecolors(- c) 选项用于控制是否 颜色应该使用控制台输出。 颜色是实现 使用 ANSI颜色 除了在Windows上,默认情况下,窗口 使用api。 从Jython访问这些api是不可能的, 因此颜色不使用Jython在Windows。

该选项支持以下不区分大小写的价值观:

汽车
颜色时启用输出写入控制台,但不是 当他们被重定向到一个文件中或其他地方。 这是默认的。
使用颜色也当输出重定向。 在Windows上不工作。
ansi
一样 在 但使用ANSI颜色也在Windows。 有用的,例如, 当重定向输出到一个程序理解ANSI颜色。 2.7.5新机器人框架。
颜色是禁用的。

请注意

机器人框架2.9之前这个功能被启用 ——monitorcolors 选项,第一次被弃用, 现在删除。 简单的选择 - c 以同样的方式工作 在所有版本。

控制台标记

从机器人Framework 2.7,特殊的标记 。 (成功), (失败)使用时显示在控制台上 详细输出 和顶级关键词测试用例结束。 标记允许后 高水平的测试执行,测试用例结束时抹去。

从机器人第2.7.4框架,可以配置标记 是使用 ——consolemarkers(- k) 选择。 它支持以下 不区分大小写的价值观:

汽车
标记写入标准输出时启用控制台, 但当它被重定向到一个文件中或其他地方。 这是默认的。
标记总是使用。
标记是被禁用的。

请注意

机器人框架2.9之前这个功能被启用 ——monitormarkers 选项,第一次被弃用, 现在删除。 简单的选择 - k 以同样的方式工作 在所有版本。

设置监听器

可以用来监控测试执行。 当他们进入 使用从命令行,他们指定使用 ——侦听器 命令行选项。 的值可以是一个路径或一个侦听器 一个侦听器的名字。 看到 监听器接口 为更多的细节部分 关于进口的听众和使用它们。

posted @ 2016-04-21 21:00  七月的尾巴_葵花  阅读(2938)  评论(0编辑  收藏  举报