我有一个测试套件,其中一些测试非常慢,所以我这样标记它们:
# tests_1.robot
TEST-1
[Tags] slow
(...)
为了避免每次启动测试时的时间损失,通过使用机器人配置文件将此类标签从“正常”执行中排除:
# robot-arguments.cfg
(... other various settings ...)
--exclude slow
在命令行中运行
robot
时会跳过此测试(即不存在),这很好:
$ robot --argumentfile robot-arguments.cfg -t "TEST*" tests/
[ ERROR ] Suite 'Tests' contains no tests or tasks matching name 'TEST*' and not matching tag 'slow'.
现在,我无论如何都想定期运行这个测试,所以我尝试了
--include
论点:
$ robot --argumentfile robot-arguments.cfg -t "TEST*" tests/ --include slow
[ ERROR ] Suite 'Tests' contains no tests or tasks matching name 'TEST*' and matching tag 'slow' and not matching tag 'slow'.
因此没有运行测试,消息中没有描述这一点
no tests matching tag 'slow' and NOT matching tag 'slow'
(强调我的)。
这是不希望的;另外,我不想从配置文件中删除该行,因为它在其他地方使用。
有没有办法用命令行传递的参数来重载配置传递的参数?
我在文档中找不到任何关于此的信息。如果我在机器人配置文件中使用
--skip slow
,情况也是一样的。
不,除了不使用该参数文件之外,没有立即的解决方案。 由于您处于 shell 中,因此您可以为您的案例准备不同的参数文件。例如:
sed 's/exclude slow/include slow/g' robot-arguments.cfg > slow-robot-arguments.cfg && robot --argumentfile slow-robot-arguments.cfg -t "TEST*" tests/