命令行选项

Robot Framework提供了为数不少的命令行选项用来控制测试用例的执行和输出. 本节将介绍这些选项的语法和到底有哪些选项可用. 具体如何使用它们将在本章的其它小节讨论.

使用选项

当要使用命令行选项时, 这些选项必须总是出现在执行脚本和数据源之间. 例如:

  1. robot -L debug my_tests.robot
  2. robot --include smoke --variable HOST:10.0.0.42 path/to/tests/

短选项和长选项

选项总是有一个较长的名字, 如 —name, 最常用的那些选项同时还有一个短名字, 例如 -N. 此外, 长选项名称可以不用写全, 只要给出的部分是唯一无歧义的即可. 例如, —logle DEBUG 可以生效, 但 —lo log.html 不行, 因为前者唯一匹配上了 —loglevel, 而后者匹配了多个选项.

短选项和截短的选项在手动执行测试用例时都挺实用, 不过在 start-up scripts 中推荐使用长选项名称, 因为它们更易懂.

长选项的格式是大小写无关的, 这有益于写出更易读的选项名字. 例如, —SuiteStatLevel 等价于 —suitestatlevel, 但是前者显然更清楚易读.

设置选项值

大多数的选项需要在选项名称后面给定一个值. 长选项和短选项都接受在空格后面跟上选项的值, 例如, —include tag-i tag. 同时对于长选项, 还可以使用等号(=), 例如 —include=tag, 而对于短选项, 中间的分隔符则是可用省略的, 如 -itag.

有的选项可用被指定多次. 例如, —variable VAR1:value —variable VAR2:another 设置了两个变量. 如果一个选项只能接受一个值而被指定了多次, 则生效的将是最后的那个.

禁用不带值的选项

不接受值的选项可用通过在选项名前加上(或去掉)前缀 no 来禁用. 最后的那个选项优先级最高. 例如, —dryrun —dryrun —nodryrun —nostatusrc —statusrc 最终不会激活dry-run模式, 并且将返回正常的状态rc(即生效的是 —nodryrun —statusrc).

注解

在选项前加/减 no 前缀是Robot Framework 2.9版本才有的新特性功能.早期版本中要禁用不带值的选项是通过再次使用一样的选项(??).

简单模式

很多的命令行选项都可以接受所谓 简单模式 的参数, 这种类似 glob patterns 的匹配规则如下:

  • * 匹配任意字符串, 空字符也不例外.
  • ? 匹配单个字符串.
  • 除非指定, 否则模式匹配是大小写, 空白, 以及下划线无关的.

例如:

  1. --test Example* # Matches tests with name starting 'Example', case insensitively.
  2. --include f?? # Matches tests with a tag that starts with 'f' or 'F' and is three characters long.

标签模式

大多数标签(tag)相关的选项名可以以 标签模式 接受参数. 这种模式和 简单模式 类似, 在此基础上增加支持 AND, ORNOT 运算符. 这些操作符用来将多个标签或模式组合起来. 具体看下面的例子.

  • AND&
  • 只有所有单个的模式匹配了, 整个模式才匹配. AND& 是等价的:
  1. --include fooANDbar # Matches tests containing tags 'foo' and 'bar'.
  2. --exclude xx&yy&zz # Matches tests containing tags 'xx', 'yy', and 'zz'.
  • OR
  • 任意单个的模式匹配, 整个模式即匹配:
  1. --include fooORbar # Matches tests containing either tag 'foo' or tag 'bar'.
  2. --exclude xxORyyORzz # Matches tests containing any of tags 'xx', 'yy', or 'zz'.
  • NOT
  • 整个模式在左边的模式匹配, 同时右边模式不匹配的情况下才算匹配. 如果使用多次, 则第一个 NOT 后面的模式都不能匹配:
  1. --include fooNOTbar # Matches tests containing tag 'foo' but not tag 'bar'.
  2. --exclude xxNOTyyNOTzz # Matches tests containing tag 'xx' but not tag 'yy' or tag 'zz'.

从Robot Framework 2.9开始, 整个模式也可以以 NOT 开始, 这种情况下, NOT 后面的模式都不匹配的时候代表整个模式匹配:

  1. --include NOTfoo # Matches tests not containing tag 'foo'
  2. --include NOTfooANDbar # Matches tests not containing tags 'foo' and 'bar'

上面的操作符可以同时混合使用, 操作符的优先级从高到低是: AND, ORNOT:

  1. --include xANDyORz # Matches tests containing either tags 'x' and 'y', or tag 'z'.
  2. --include xORyNOTz # Matches tests containing either tag 'x' or 'y', but not tag 'z'.
  3. --include xNOTyANDz # Matches tests containing tag 'x', but not tags 'y' and 'z'.

虽然标签匹配本身是大小写无关的, 但是所有的操作符都是大小写敏感的, 必须都是全大写字母. 如果标签本身(也许是单词里面)恰巧包含了 AND, ORNOT, 它们需要转换成小写字母以避免无意中的操作符运算:

  1. --include port # Matches tests containing tag 'port', case-insensitively
  2. --include PORT # Matches tests containing tag 'P' or 'T', case-insensitively
  3. --exclude handoverORportNOTnotification

注解

OR 操作符是 Robot Framework 2.8.4 版本才新加入的.

环境变量 ROBOT_OPTIONS 和 REBOT_OPTIONS

环境变量 ROBOT_OPTIONSREBOT_OPTIONS 分别被用来指定 测试执行结果后处理 的默认选项. 选项名称和值必须以 空格分开的列表 形式给出, 它们将出现在其它所有显式给出的命令行选项之前.

这些环境变量的主要作用是用来设置某些选项的全局的默认值, 避免每次执行测试或使用Rebot时重复输入这些选项.

  1. export ROBOT_OPTIONS="--critical regression --tagdoc 'mytag:Example doc with spaces'"
  2. robot tests.robot
  3. export REBOT_OPTIONS="--reportbackground green:yellow:red"
  4. rebot --name example output.xml

注解

环境变量 ROBOT_OPTIONSREBOT_OPTIONS 是 Robot Framework2.8.2版本后加入的功能.

使用引号将包含空格的值括起来, 是 Robot Framework 2.9.2新增功能.