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 以同样的方式工作 在所有版本。

设置监听器

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

时间: 2024-10-05 04:25:26

robotframework笔记20的相关文章

springmvc学习笔记(20)-拦截器

springmvc学习笔记(20)-拦截器 springmvc学习笔记20-拦截器 拦截定义 拦截器配置 针对HandlerMapping配置 类似全局的拦截器 拦截测试 拦截器应用实现登陆认证 需求 登陆controller方法 登陆认证拦截实现 本文主要介绍springmvc中的拦截器,包括拦截器定义和的配置,然后演示了一个链式拦截的测试示例,最后通过一个登录认证的例子展示了拦截器的应用 拦截定义 定义拦截器,实现HandlerInterceptor接口.接口中提供三个方法. public

python基础教程_学习笔记20:标准库:一些最爱——os

标准库:一些最爱 os os模块为你提供了访问多个操作系统服务的功能. os和它的子模块os.path还包括一些用于检查.构造.删除目录和文件的函数,以及一些处理路径的函数. os模块中一些重要函数和变量 函数/变量 描述 environ 对环境变量进行映射 system(command) 在子shell中执行操作系统命令 sep 路径中的分隔符 pathsep 分隔路径的分隔符 linesep 行分隔符('\n','\r','\r\n') urandom(n) 返回n字节的加密强随机数据 os

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

Ext.Net学习笔记20:Ext.Net FormPanel 复杂用法 在上一篇笔记中我们介绍了Ext.Net的简单用法,并创建了一个简单的登录表单.今天我们将看一下如何更好是使用FormPanel,包括使用字段默认值.Checkbox Grouping和Radio Button Grouping等. 为FormPanel设置默认值 在Form中设置FieldDefaults标签可以设置字段属性的默认值.来看一下我们的用法: <FieldDefaults LabelWidth="60&q

robotframework笔记1--安装与卸载

机器人框架 实现与 Python 和支持也 Jython (JVM)和 IronPython (. net). 在安装框架之前, 一个明显的 先决条件 就是安装至少一个. 下面列出了不同的方法来安装机器人框架本身和解释 更彻底地在随后的部分. 安装与pip 使用pip推荐的方法是安装机器人框架. 随着 标准的Python包管理器包含在最新的Python, Jython和IronPython版本. 如果你已经pip,你 可以执行: pip install robotframework 从源代码安装

JavaScript高级程序设计(第三版)学习笔记20、21、23章

第20章,JSON JSON(JavaScript Object Notation,JavaScript对象表示法),是JavaScript的一个严格的子集. JSON可表示一下三种类型值: 简单值:字符串,数值,布尔值,null,不支持js特殊值:undefined 对象:一组无序的键值对 数组:一组有序的值的列表 不支持变量,函数或对象实例 注:JSON的字符串必须使用双引号,这是与JavaScript字符串最大的区别 对象 { "name":"Nicholas"

robotframework笔记11

测试用例的语法 基本语法 测试用例构造测试用例表中可用 关键词. 关键字可以进口 测试库 或 资源 文件 或创建的 关键字表 的测试用例文件 本身. 测试用例表中第一列包含测试用例的名称. 一个 测试用例开始在这一列和行了 继续下一个测试用例名称或表的结束. 它是 之间有一个错误表标题和第一 测试. 第二列通常有关键字的名字. 一个例外 是 从关键字设置变量返回值 ,当第二和 也可能随后列包含变量名和关键字 的名字是位于. 在这两种情况下,列在关键字的名字 包含可能的参数指定的关键字. ***

HTML5自学笔记[20 ]canvas绘图实例之绘制倒影

1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title>倒影</title> 6 <style> 7 body{background:#000;} 8 canvas{background: #fff; margin-left:500px;} 9 </style> 10

HTML学习笔记20——表单form (用户注册表)

表单:用户注册,在线报名……时,需要把用户的相关信息填写并提交,这时就需使用到表单来收集用户信息. 基本格式: [action 用于控制提交的地方(默认为自己的页面,也可在其值定义其他的网站名),method(默认是将信息的内容直接显示在提交的页面网址上)当设置method=”post“时就不会将信息内容全部显示到提交的页面网址上]action控制往哪里发,method控制发送方式: <form action=""    > <p>信息1</p> &

JDBC学习笔记(20):将DAO中的修改方法提取到抽象父类中

创建一个父类AbstractDao,通过传入更新语句和参数可以动态执行更新操作,与具体的对象无关. 1 package com.xxyh.jdbc.dao.refactor; 2 import java.sql.Connection; 3 import java.sql.PreparedStatement; 4 import java.sql.ResultSet; 5 import java.sql.SQLException; 6 import com.xxyh.jdbc.JdbcUtils;