命令行选项
Robot Framework提供了为数不少的命令行选项用来控制测试用例的执行和输出. 本节将介绍这些选项的语法和到底有哪些选项可用. 具体如何使用它们将在本章的其它小节讨论.
使用选项
当要使用命令行选项时, 这些选项必须总是出现在执行脚本和数据源之间. 例如:
- robot -L debug my_tests.robot
- 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 的匹配规则如下:
*
匹配任意字符串, 空字符也不例外.?
匹配单个字符串.- 除非指定, 否则模式匹配是大小写, 空白, 以及下划线无关的.
例如:
- --test Example* # Matches tests with name starting 'Example', case insensitively.
- --include f?? # Matches tests with a tag that starts with 'f' or 'F' and is three characters long.
标签模式
大多数标签(tag)相关的选项名可以以 标签模式 接受参数. 这种模式和 简单模式 类似, 在此基础上增加支持 AND
, OR
和 NOT
运算符. 这些操作符用来将多个标签或模式组合起来. 具体看下面的例子.
AND
或&
- 只有所有单个的模式匹配了, 整个模式才匹配.
AND
和&
是等价的:
- --include fooANDbar # Matches tests containing tags 'foo' and 'bar'.
- --exclude xx&yy&zz # Matches tests containing tags 'xx', 'yy', and 'zz'.
OR
- 任意单个的模式匹配, 整个模式即匹配:
- --include fooORbar # Matches tests containing either tag 'foo' or tag 'bar'.
- --exclude xxORyyORzz # Matches tests containing any of tags 'xx', 'yy', or 'zz'.
NOT
- 整个模式在左边的模式匹配, 同时右边模式不匹配的情况下才算匹配. 如果使用多次, 则第一个 NOT 后面的模式都不能匹配:
- --include fooNOTbar # Matches tests containing tag 'foo' but not tag 'bar'.
- --exclude xxNOTyyNOTzz # Matches tests containing tag 'xx' but not tag 'yy' or tag 'zz'.
从Robot Framework 2.9开始, 整个模式也可以以 NOT
开始, 这种情况下, NOT
后面的模式都不匹配的时候代表整个模式匹配:
- --include NOTfoo # Matches tests not containing tag 'foo'
- --include NOTfooANDbar # Matches tests not containing tags 'foo' and 'bar'
上面的操作符可以同时混合使用, 操作符的优先级从高到低是: AND
, OR
和 NOT
:
- --include xANDyORz # Matches tests containing either tags 'x' and 'y', or tag 'z'.
- --include xORyNOTz # Matches tests containing either tag 'x' or 'y', but not tag 'z'.
- --include xNOTyANDz # Matches tests containing tag 'x', but not tags 'y' and 'z'.
虽然标签匹配本身是大小写无关的, 但是所有的操作符都是大小写敏感的, 必须都是全大写字母. 如果标签本身(也许是单词里面)恰巧包含了 AND
, OR
或 NOT
, 它们需要转换成小写字母以避免无意中的操作符运算:
- --include port # Matches tests containing tag 'port', case-insensitively
- --include PORT # Matches tests containing tag 'P' or 'T', case-insensitively
- --exclude handoverORportNOTnotification
注解
OR
操作符是 Robot Framework 2.8.4 版本才新加入的.
环境变量 ROBOT_OPTIONS 和 REBOT_OPTIONS
环境变量 ROBOT_OPTIONS
和 REBOT_OPTIONS
分别被用来指定 测试执行 和 结果后处理 的默认选项. 选项名称和值必须以 空格分开的列表 形式给出, 它们将出现在其它所有显式给出的命令行选项之前.
这些环境变量的主要作用是用来设置某些选项的全局的默认值, 避免每次执行测试或使用Rebot时重复输入这些选项.
- export ROBOT_OPTIONS="--critical regression --tagdoc 'mytag:Example doc with spaces'"
- robot tests.robot
- export REBOT_OPTIONS="--reportbackground green:yellow:red"
- rebot --name example output.xml
注解
环境变量 ROBOT_OPTIONS
和 REBOT_OPTIONS
是 Robot Framework2.8.2版本后加入的功能.
使用引号将包含空格的值括起来, 是 Robot Framework 2.9.2新增功能.