配置执行

选择测试用例

机器人框架提供了几个选择的命令行选项 执行测试用例。 也工作在相同的选项 后处理输出与 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 以同样的方式工作 在所有版本。

设置监听器

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

robotframework笔记20的更多相关文章

  1. Ext.Net学习笔记20:Ext.Net FormPanel 复杂用法

    Ext.Net学习笔记20:Ext.Net FormPanel 复杂用法 在上一篇笔记中我们介绍了Ext.Net的简单用法,并创建了一个简单的登录表单.今天我们将看一下如何更好是使用FormPanel ...

  2. SQL反模式学习笔记20 明文密码

    目标:恢复或重置密码 反模式:使用明文存储密码 1.存储密码 使用明文存储密码或者在网络上传递密码是不安全的. 如果攻击者截取到你用来插入(或者修改)密码的sql语句,就可以获得密码.     黑客获 ...

  3. golang学习笔记20 一道考察对并发多协程操作一个共享变量的面试题

    golang学习笔记20 一道考察对并发多协程操作一个共享变量的面试题 下面这个程序运行的能num结果是什么? package main import ( "fmt" " ...

  4. JAVA自学笔记20

    JAVA自学笔记20 1.递归: 1)方法定义中定义中调用方法本身的现象 2)要有出口,否则就是死递归 次数不能太多.否则内存将溢出 构造方法不能递归使用 //斐波那契数列:1,1,2,3,5,8,1 ...

  5. robotframework笔记2

    法文件和目录 层次结构安排测试用例构建如下: 在创建测试用例 测试用例文件 . 自动创建一个测试用例文件 测试套件 包含 测试用例文件. 一个目录包含测试用例文件形成一个更高级别的测试 套件. 这样一 ...

  6. Hadoop学习笔记—20.网站日志分析项目案例

    1.1 项目来源 本次要实践的数据日志来源于国内某技术学习论坛,该论坛由某培训机构主办,汇聚了众多技术学习者,每天都有人发帖.回帖,如图1所示. 图1 项目来源网站-技术学习论坛 本次实践的目的就在于 ...

  7. Hadoop学习笔记—20.网站日志分析项目案例(二)数据清洗

    网站日志分析项目案例(一)项目介绍:http://www.cnblogs.com/edisonchou/p/4449082.html 网站日志分析项目案例(二)数据清洗:当前页面 网站日志分析项目案例 ...

  8. Hadoop学习笔记—20.网站日志分析项目案例(三)统计分析

    网站日志分析项目案例(一)项目介绍:http://www.cnblogs.com/edisonchou/p/4449082.html 网站日志分析项目案例(二)数据清洗:http://www.cnbl ...

  9. robotframework笔记25

    library文档工具(Libdoc) Libdoc是机器人框架内置的工具生成的关键字的文档 测试库和资源文件的HTML和XML格式. 前 格式适用于人类,后者 骑 和其他 工具. Libdoc显示库 ...

随机推荐

  1. 真正意义上下一代 Windows Embedded:有关 Windows 10 "Athens" 的事

    早在去年 BUILD 大会上,Joe Belfiore 就在一台巨大的 "脚踩钢琴" 上简短展示过 "Windows on Device"(又名 Windows ...

  2. IOS设计模式之一(MVC模式,单例模式)

    iOS 设计模式-你可能已经听说过这个词,但是你真正理解它意味着什么吗?虽然大多数的开发者可能都会认为设计模式是非常重要的,然而关于设计模式这一主题的文章却不多,并且有时候我们开发者在写代码的时候也不 ...

  3. thinkphp的自动完成功能说明

    手册里有一句话很关键: 自动完成是ThinkPHP提供用来完成数据自动处理和过滤的方法,使用create方法创建数据对象的时候会自动完成数据处理. 这句话说明自动完成发生的时间是create()组建数 ...

  4. Comware 架构理解

    网络操作系统 首先什么是网络操作系统: 一种说法是:运行在路由器,网络交换机,防火墙上的特别的操作系统 另一种说法是:部署在局域网或者私有网络,允许网络中的多个计算机共享文件和打印机,因为现在的单机系 ...

  5. Android中向SD卡读写数据,读SD卡和手机内存

    package com.example.sdoperation; import java.io.BufferedReader; import java.io.File; import java.io. ...

  6. spring的自动装配(default-autowire="byName")

    自动装配,官方给出的定义是这样:Spring IoC容器可以自动装配(autowire)相互协作bean之间的关联关系.因此,如果可能的话,可以自 动让Spring通过检查BeanFactory中的内 ...

  7. MongoDB入门教程之C#驱动操作实例

    实体类: using MongoDB.Bson; namespace WindowsFormsApp { class User { //public ObjectId _id; //BsonType. ...

  8. [转载] 一篇文章带你了解Paxos算法

    原文: http://dockone.io/article/640 [编者的话]本文是Quora上关于Paxos算法的回答,两位答者分别从不同的角度描述Paxos算法.Vineet Gupta的回答细 ...

  9. 卷积FFT、NTT、FWT

    先简短几句话说说FFT.... 多项式可用系数和点值表示,n个点可确定一个次数小于n的多项式. 多项式乘积为 f(x)*g(x),显然若已知f(x), g(x)的点值,O(n)可求得多项式乘积的点值. ...

  10. mysql存入数据出错总结

    ELECT t0.accusation_des, t0.submit_time, t0.result, t0.handle_time, t1.content, t4.nick_name,t5.cont ...