3.4配置执行

本节介绍可用于配置测试执行或后处理输出的不同命令行选项。与生成的输出文件相关的选项将在下一节中讨论。

3.4.1选择测试用例

Robot Framework提供了几个命令行选项,用于选择要执行的测试用例。使用rebot工具后处理输出时,相同的选项也有效。

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

可以使用命令行选项--suite(-s)和--test(-t)分别按名称选择测试套件和测试用例。这两个选项都可以多次使用,以选择多个测试套件或案例。这些选项的参数是区分大小写和空格不敏感的,并且还可以有匹配多个名称的简单模式。如果同时使用--suite和 --test选项,则仅选择匹配套件中具有匹配名称的测试用例。

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

注意

使用长名称(例如mysuite.mytest)选择测试用例与Robot Framework 2.5.6及更高版本一起使用。

使用--suite选项或多或少与仅执行适当的测试用例文件或目录相同。一个主要的好处是可以根据其父套件选择套件。其语法是指定用点分隔的父套件和子套件名称。在这种情况下,执行父套件的可能设置和拆除。

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

在创建测试用例时,使用--test选项选择单个测试用例非常实用,但在自动运行测试时非常有限。在这种情况下,-- suite选项很有用,但通常,按标记名称选择测试用例更灵活。

按标签名称

可以使用--include(-i)和--exclude(-e)选项分别按标记名称 包含和排除测试用例。当使用前者时,仅选择具有匹配标签的测试用例,而对于后者,具有匹配标签的测试用例不被选择。如果两者都使用,则仅选择具有与前一选项匹配的标签的测试,而不选择与后者匹配的标签。

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

无论--include和--exclude可以多次使用,以匹配多个标签,以及它们的参数可以是简单的模式。在这些情况下,选择测试用例的规则适用,因此选择具有与任何包含模式匹配的标记的测试用例,并且不使用匹配排除模式的标记进行测试。通过使用&或 AND(区分大小写)分隔标记,也可以仅选择具有两个或更多指定标记的测试用例。从Robot Framework 2.1.3开始,只能通过用NOT(区分大小写)分隔这些标记来选择具有特定标记但没有任何其他标记的测试。如果任何模式之间的多个 NOT 匹配,未选择测试用例。

--include req-*
--include regressionANDiter-42
--include tag1&tag2&tag3&tag4
--exclude regressionNOTowner-*
--include tag1NOTtag2NOTtag3&tag4 (includes tests which have `tag1`, but not tests which additionally have `tag2` or both tags `tag3` and `tag4`)

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

  • 在其他测试之前执行的测试子集可以使用smoke标记并使用--include smoke执行。
  • 未完成的测试可以使用标记not_ready提交到版本控制, 并使用--exclude not_ready从测试执行中排除 。
  • 可以使用iter- <num>标记测试,其中 <num>指定当前迭代的编号,并且在执行所有测试用例之后,可以生成仅包含特定迭代的测试的单独报告(例如,rebot - -include iter-42 output.xml)。

当没有测试匹配选择时

默认情况下,当没有测试与选择条件匹配时,测试执行失败并出现如下错误:

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

由于未生成任何输出,因此如果执行测试并自动处理结果,则此行为可能会出现问题。幸运的是,在这种情况下,命令行选项--RunEmptySuite可用于强制执行套件。结果,创建了正常输出但显示零执行测试。当执行不包含测试的空目录或测试用例文件时,也可以使用相同的选项来更改行为。

使用rebot处理输出文件时也会发生类似情况。可能没有测试与使用的过滤条件匹配,或者输出文件不包含任何测试。默认执行 情况下,在这些情况 rebot失败,但它有一个单独的 --ProcessEmptySuite选项,可用于更改行为。在实践中,此选项与运行测试时的--RunEmptySuite的工作方式相同。

注意

--RunEmptySuite选项在2.7.2中添加了Robot Framework 2.6和--ProcessEmptySuite。

3.4.2设置关键性

测试执行的最终结果是在关键测试的基础上确定的。如果单个关键测试失败,则认为整个测试运行失败。另一方面,非关键测试用例可能会失败,整体状态仍然会通过。

默认情况下,所有测试用例都很关键,但可以使用--critical(-c)和--noncritical(-n) 选项进行更改。这些选项根据标记指定哪些测试用例被认为是关键的,类似于--include和 --exclude用于按标记名称选择测试用例。如果仅使用--critical,则具有匹配标记的测试用例至关重要。如果仅使用--noncritical,则没有匹配标记的测试至关重要。最后,如果两者都使用,则仅使用关键标签进行测试但没有非关键标签被认为是关键的。这两个选项都接受简单的模式 ,可以多次给出:

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

设置关键性的最常见用例是在测试执行中还没有准备好测试用例或测试功能仍在开发中。当然,这些测试可以通过--exclude选项完全排除在测试执行之外,但是将它们包括在非关键测试中可以让您看到它们何时开始通过。

从Robot Framework 2.1开始,执行测试时的关键性设置不会存储在任何地方。如果你想保持相同的临界时,处理后的输出与rebot,你需要使用--critical和/或--noncritical也与它:

# Use rebot to create new log and report from the output created during execution
pybot --critical regression --outputdir all my_tests.html
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
jybot --log NONE --report NONE my_tests.html
rebot --critical feature1 output.xml

3.4.3设置元数据

设置名称

当Robot Framework分析测试数据时,将根据文件名和目录名创建测试套件名称。但是,可以使用命令行选项--name(-N)覆盖顶级测试套件的名称 。给定名称中的下划线自动转换为空格,名称中的单词大写。

设置文档

除了在测试数据中定义文档之外,还可以从命令行使用选项--doc(-D)给出顶级套件的文档。给定文档中的下划线转换为空格,并且可能包含简单的HTML格式。

设置免费元数据

也可以从命令行使用选项--metadata(-M)给出免费的测试套件元数据。参数必须采用格式 name:value,其中name是要设置的元数据的名称, value是其值。名称和值中的下划线转换为空格,后者可能包含简单的HTML格式。可以多次使用此选项来设置多个元数据。

设置标签

命令行选项--settag(-G)可用于将给定标记设置为所有已执行的测试用例。可以多次使用此选项来设置多个标签。

3.4.4调整库搜索路径

当使用测试库时,Robot Framework使用Python或Jython解释器从系统导入实现库的模块。搜索这些模块的位置称为PYTHONPATH,在Jython上运行测试或使用jar分发时,也使用Java CLASSPATH。

调整库搜索路径以便找到库是成功执行测试的必要条件。除了查找测试库之外,搜索路径还用于查找在命令行上设置的侦听器。有多种方法可以更改PYTHONPATH和CLASSPATH,但无论选择哪种方法,都建议使用自定义启动脚本。

PYTHONPATH中的位置自动

Python和Jython安装会自动将自己的库目录放入PYTHONPATH。这意味着使用Python自己的打包系统打包的测试库会自动安装到库搜索路径中的位置。Robot Framework还将包含其标准库的目录和执行测试的目录放入PYTHONPATH。

设置PYTHONPATH

有几种方法可以改变系统中的PYTHONPATH,但最常见的方法是在测试执行之前设置一个具有相同名称的环境变量。Jython实际上并不正常使用PYTHONPATH环境变量,但Robot Framework确保将其中列出的位置添加到库搜索路径中,而不管解释器如何。

设置CLASSPATH

CLASSPATH与Jython一起使用或在使用独立jar时使用。

使用Jython时,最常见的改变CLASSPATH的方法是设置一个与PYTHONPATH类似的环境变量。请注意,代替CLASSPATH,始终可以将PYTHONPATH与Jython一起使用,即使使用Java实现的库和侦听器也是如此。

使用独立jar分发时,由于java -jar命令不读取CLASSPATH环境变量,因此必须稍微设置CLASSPATH。在这种情况下,有两种不同的方法来配置CLASSPATH,如下面的示例所示:

java -cp lib/testlibrary.jar:lib/app.jar:robotframework-2.7.1.jar org.robotframework.RobotFramework example.txt

java -Xbootclasspath/a:lib/testlibrary.jar:lib/app.jar -jar robotframework-2.7.1.jar example.txt

使用--pythonpath选项

Robot Framework还有一个单独的命令行选项 --pythonpath(-P),用于将目录或归档添加到PYTHONPATH中。可以通过用冒号(:)或多次使用此选项分隔多个路径。给定路径也可以是匹配多个路径的glob模式,但通常必须进行 转义。

例子:

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

3.4.5设置变量

可以从命令行 使用--variable(-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

3.4.6干运行

Robot Framework支持所谓的干运行模式,否则测试会正常运行,但来自测试库的关键字根本不会执行。干运行模式可用于验证测试数据; 如果干运行通过,数据应该在语法上正确。此模式使用选项--runmode DryRun (不区分大小写)触发,并且从Robot Framework 2.5开始支持。

由于以下原因,干运行执行可能会失败:

  • 使用未找到的关键字。
  • 使用错误数量的参数的关键字。
  • 使用语法无效的用户关键字。

除了这些故障之外,还会显示正常的执行错误,例如,无法解析测试库或资源文件导入时。

注意

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

3.4.7随机化执行顺序

该--runmode选项也可用于随机测试执行顺序。这是使用下面解释的不同值完成的。

随机:测试
每个测试套件中的测试用例以随机顺序执行。
随机:套装
所有测试套件都以随机顺序执行,但套件内的测试用例按照定义的顺序运行。
随机:所有
测试用例和测试套件都是以随机顺序执行的。

例:

pybot --runmode random:test my_test.txt

3.4.8控制控制台输出

控制台宽度

可以使用选项--monitorwidth(-W)设置控制台中测试执行输出的宽度。默认宽度为78个字符。

小费

在许多类UNIX机器上,你可以使用方便的$ COLUMNS 变量,如--monitorwidth $ COLUMNS。

控制台颜色

所述--monitorcolors(-C)选项用于控制是否颜色应在控制台输出被使用。使用Jython时,颜色应该适用于除Windows之外的所有其他平台。此选项具有以下不区分大小写的值:

auto
输出写入控制台时启用颜色,但重定向到文件时不启用颜色。这是默认设置,很少需要更改它。
on
输出重定向到文件时也使用颜色。对Windows没有影响。
off
颜色被禁用。
force
向后兼容Robot Framework 2.5.5及更早版本。不应该使用。

注意

支持Windows上的颜色和自动模式是Robot Framework 2.5.6中的新功能。

3.4.9设置监听器

所谓的侦听器可用于监视测试执行。它们与命令行选项 --listener一起使用,并且指定的侦听器必须与模块搜索路径一样,与测试库类似。

Robot Framework(十二) 执行测试用例——配置执行的更多相关文章

  1. Robot Framework(十) 执行测试用例——测试执行

    3.2测试执行 本节描述如何执行从解析的测试数据创建的测试套件结构,如何在失败后继续执行测试用例,以及如何正常停止整个测试执行. 3.2.1执行流程 执行套房和测试 设置和拆卸 执行顺序 3.2.2继 ...

  2. Robot Framework自动化测试二(元素定位)

    前言 在学习的过程中,可能会误认为Robot framework 只是个web UI测试工具,更正确的理解Robot framework是个测试框架,之所以可以拿来做web UI层的自动化是国为我们加 ...

  3. Robot Framework+python的安装,配置,环境搭建(纯白篇)

    弄了大半天 终于把-Robot Framework-弄好了,总是一个发现问题,一个一个去解决的过程,只是时间嘛,咳咳咳咳 言归正传 第一. 记住了 Robot Framework 的库 只支持 pyt ...

  4. robot framework笔记(一):环境配置(基于python3)+在pycharm中编写及运行robot脚本

    (一)使用pip安装robotframework框架和seleniumlibrary库 pip install --upgrade robotframework pip install --upgra ...

  5. Robot Framework(二)测试数据语法

    2.1.1文件和目录 测试数据的层次结构安排如下: 测试数据在测试数据文件中创建. 测试数据文件会自动创建一个包含该文件中的测试数据的测试套件. 包含测试数据文件的目录构成了更高级别的测试套件.这样的 ...

  6. robot framework学习二-----元素定位

    文章摘自:https://www.cnblogs.com/fnng/p/3901391.html 不要误认为Robot framework 只是个web UI测试工具,更正确的理解Robot fram ...

  7. JMeter 十二:命令行执行

    参考文档:http://jmeter.apache.org/usermanual/get-started.html#non_gui 真正开始跑压力测试时,我们就不能使用GUI模式了.这时候需要采用命令 ...

  8. ASP.NET Core 2.2 : 二十二. 多样性的配置方式

    大多数应用都离不开配置,本章将介绍ASP.NET Core中常见的几种配置方式及系统内部实现的机制. 说到配置,第一印象可能就是“.config”类型的xml文件或者“.ini”类型的ini文件,在A ...

  9. robot framework笔记(二):在RF中自定义chrome启动参数

    (一)在RF中自定义chrome启动参数 这里主要是实现下面2个功能 1.禁用chrome正受自动测试软件控制的提示 2.设置默认的下载路径(一些导出.下载类的功能,将文件下载到指定路径下) 自定义一 ...

随机推荐

  1. 如何将linux主机接入到网络中

    前言: 这篇博客的主旨就想文章题目说的那样,当我们拿到一台新的系统时,我们怎么实现让你的主机连接到网络中.配置网络就是给你的系统配置IP地址,子网掩码,网关以及DNS.也就是说配置好这几项计算机上网的 ...

  2. Laravel中使用模型对数据进行操作

    public function orm(){ //查询表的所有记录 //$user = Admin::all(); //dd($user); //查询某一条记录 //$user = Admin::fi ...

  3. UVa 820 Internet Bandwidth (裸板网络流)

    题意:有一个计算机网络,输入节点数n,输入网络流源点和汇点src,des,再输入双向边数m.给出m条边的负载,求最大流. 析:直接上网络流的最大流. 代码如下: #pragma comment(lin ...

  4. npm 的安装与使用

    创建: 2019/04/06 完成: 2019/04/07  安装 npm写在node.js里, 故安装node.js即可 https://nodejs.org/en/download/ 确认是否安装 ...

  5. 洛谷 - P2424 - 约数和 - 整除分块

    https://www.luogu.org/problemnew/show/P2424 记 \(\sigma(n)\) 为n的所有约数之和,例如 \(\sigma(6)=1+2+3+6=12\) . ...

  6. 使用dynamic关键词 CS1969错误

    添加 Microsoft.CSharp.dll 引用即可 不需要添加using Microsoft.CSharp 这类namespace

  7. 01 | Jewels and Stones

    Question You're given strings J representing the types of stones that are jewels, and S representing ...

  8. C#连接Sqlite实现单表操作

    今天我们来了解下VS使用的众多数据库中比较轻量的数据库SQLITE,好处当然就在于“轻~”!!!.自己理解

  9. 应用日志获取-web系统

    1 场景 应用使开发写的,但应用使部署再服务器上,而开发没有ssh登陆服务器的权限. so,开发总是请运维查日志,下载日志. so and so,运维要花很多时间帮开发去搞日志. 这是件很没意义的事, ...

  10. Influxdb 时序数据库 centos 安装

    Influxdb 环境搭建 操作系统:CentOS 7 X64 SSH工具:PuTTY 操作系统安装,请参照官网文档进行:https://www.centos.org/ 使用PuTTY 通过ssh连接 ...