如何使用Robot Framework从测试套件中运行特定测试用例

42 投票
4 回答
98504 浏览
提问于 2025-04-18 15:06

我刚开始学习Robot,正在学习如何编写逻辑和测试用例。

我有一个测试套件,叫做“mytestsuite.robot”,里面有很多测试用例。我在其中一个测试用例里遇到了一些错误。

我想只运行那个特定的测试用例,因为我不想再运行整个测试套件。

文件 mytestsuite.robot

testcase1
....
....
testcase2
....
....
testcase3
....
....
testcase4
....
....

假设测试用例3失败了,我只想重新运行测试用例3。

我试着使用:

pybot mytestsuite.robot -t testcase3

但是我遇到了一个错误。

4 个回答

0

虽然这个帖子有点晚了,但如果将来有人在找这个内容,你可以使用标签的概念。在Robot Framework中,你可以给你的测试套件和测试用例加标签。我会专注于基于测试的标签来回答你的问题。其他的内容你可以去看看这个链接 - https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#tagging-test-cases

在你的例子中:

文件 mytestsuite.robot

testcase1
...
...
testcase2
...
...
testcase3
[Tags] | temp
...
...
testcase4
...
...

你可以给任何测试用例添加多个标签。使用--include(也可以用-i)这个选项来指定你想运行哪个标签。在这种情况下:

robot --include temp mytestsuite.robot

或者

robot --i temp mytestsuite.robot
7

如果你在使用 __init__.robot 文件,并且这些文件里有设置和清理的步骤,那么在有嵌套目录结构的情况下,你不能直接从测试文件中调用一个测试。比如说,下面这样的结构:

|-- foo
    |-- bar.robot

假设 bar.robot 文件里有一个叫 baz 的测试用例,这种情况下,你可以这样做:

robot --test 'foo.bar.baz' foo

如果目录嵌套得更深:

|-- foo
    |-- bar
        |-- baz.robot

robot --test 'foo.bar.baz.*' foo

你可以用 *(星号)来运行 foo.bar.baz 这个测试套件里的所有测试用例。

8

如果你想在Robot Framework中运行一个单独的测试案例,可以参考下面的例子。

语法: robot -t "测试案例名称" 测试套件名称
例子: robot -t "PON类型测试案例" Aquarium_Project.robot

如果你想在Robot Framework中运行所有的测试案例,可以参考下面的例子。

语法: robot 测试套件名称
例子: robot Aquarium_Project.robot

68

你想使用 -t--test 这个选项,但这个选项要放在文件名 前面,而不是后面。这样写就可以了:

robot -t testcase1 mytestsuite.robot

关于命令行参数的顺序,可以在用户手册中找到,那里有一节叫做 开始测试执行,你也可以在命令行中使用 --help 选项查看(比如 pybot --help)。

要注意,具体的文件名是可选的。你也可以只用: robot -t testcase1 .

这里的 "." 表示查找当前目录下所有包含指定测试的文件。Robot 会帮你找到具体的测试。

你还可以在测试名称的开头或结尾使用通配符 *,这样可以更方便地匹配测试或运行多个测试。

比如: robot -t "testcase1*" .

这样会匹配当前文件夹中所有以 "testcase1" 开头的测试。

用户手册中还有一节叫做 选择测试用例,里面详细讲了这个内容。

撰写回答