我有一个包含 9 个 Robot Framework 测试文件的文件夹。只需执行其中的 8 个,因为最后一个用于设置所有其他的(我们称之为config.robot
)。
如果我必须运行所有这些测试,我会做类似的事情
for test_file in folder/*.robot; do
robot -b debug.log -d log/ $test_file.robot;
done
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,这意味着它config.robot
也将运行,这是我不想要的。
如何对文件夹中除一个文件之外的所有文件执行 for 循环?
如果这有帮助,除了config.robot
遵循以下命名语法之外的所有文件:它们都以执行顺序开头,后跟其实际名称,例如01__init-connection.robot
.
编辑:在发布该问题之前,我已经看到并尝试了从全局匹配中排除一种模式中提供的答案,并写了类似的内容
shopt -s extglob
for test_file in folder/!(config).robot; do ...
Run Code Online (Sandbox Code Playgroud)
但 Robot Framework 无法识别该文件名:
Parsing 'folder/!(config).robot' failed: Data source does not exist.
Run Code Online (Sandbox Code Playgroud)
所以我猜机器人框架不喜欢这种语法。
我正在考虑根据与我的文件名结构匹配的正则表达式使用查找结果设置一个变量,然后对该变量执行 for 循环:
SUITES=$(find . -regex '^[0-9][0-9][a-zA-Z_-]*')
for SUITE in $SUITES; do robot -b ...
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,当我echo
套房时,它什么也没返回。我不知道我在这里错过了什么。