我正在使用robotframework运行一堆python函数作为测试用例。我将一堆测试用例标记为设置,并将一堆测试用例标记为清理。我在机器人中使用-i选项来运行各种测试用例。通常,我运行-i setup进行设置,并运行-i cleanup清理测试套件。但是,如果安装中的测试用例失败,则所有测试用例仍将执行。我正在寻找一种将一堆测试用例标记为套件安装和套件拆卸的功能,并且如果套件安装自动失败,则在不运行任何测试用例的情况下运行套件拆卸。我尝试了带有关键字的Suite Setup选项,但是与此同时,我将测试用例移到了关键字部分,并且失去了标签功能。
原始机器人文件
*** Settings ***
Suite Setup
Suite Teardown
*** Test Cases ***
setup_1
[Tags] setup smoke 1
${result} ${result_str} = test.test.TestSetup.test_setup_1
Should Be Equal ${result} ${TRUE}
setup_2
[Tags] setup smoke 1
${result} ${result_str} = test.test.TestSetup.test_setup_2
Should Be Equal ${result} ${TRUE}
setup_3
[Tags] setup smoke 1
${result} ${result_str} = test.test.TestSetup.test_setup_3
Should Be Equal ${result} ${TRUE}
TestCase 1
[Tags] tc
${result} ${result_str} = test.test.my_func.test_func_1
Should Be Equal ${result} ${TRUE}
TestCase 2
[Tags] tc
${result} ${result_str} = test.test.my_func.test_func_2
Should Be Equal ${result} ${TRUE}
cleanup_1
[Tags] cleanup smoke 1
${result} ${result_str} = test.test.TestCleanup.test_cleanup_1
Should Be Equal ${result} ${TRUE}
cleanup_2
[Tags] cleanup smoke 1
${result} ${result_str} = test.test.TestCleanup.test_cleanup_2
Should Be Equal ${result} ${TRUE}
带有关键字的机器人文件
*** Settings ***
Suite Setup Run keywords
... setup_1
... AND setup_2
... AND setup_3
Suite Teardown Run keywords
... cleanup_1
... AND cleanup_2
*** Keywords ***
setup_1
[Tags] setup smoke 1
${result} ${result_str} = test.test.TestSetup.test_setup_1
Should Be Equal ${result} ${TRUE}
setup_2
[Tags] setup smoke 1
${result} ${result_str} = test.test.TestSetup.test_setup_2
Should Be Equal ${result} ${TRUE}
setup_3
[Tags] setup smoke 1
${result} ${result_str} = test.test.TestSetup.test_setup_3
Should Be Equal ${result} ${TRUE}
cleanup_1
[Tags] cleanup smoke 1
${result} ${result_str} = test.test.TestCleanup.test_cleanup_1
Should Be Equal ${result} ${TRUE}
cleanup_2
[Tags] cleanup smoke 1
${result} ${result_str} = test.test.TestCleanup.test_cleanup_2
Should Be Equal ${result} ${TRUE}
*** Test Cases ***
TestCase 1
[Tags] tc
${result} ${result_str} = test.test.my_func.test_func_1
Should Be Equal ${result} ${TRUE}
TestCase 2
[Tags] tc
${result} ${result_str} = test.test.my_func.test_func_2
Should Be Equal ${result} ${TRUE}
有什么方法可以将标记有安装程序的测试标记为Suite Setup,并将标记有清理标记的测试标记为Suite Teardown,并且仍然能够在安装和拆卸中运行各个测试?
答案 0 :(得分:1)
如何在套件设置中运行测试用例?
不能。测试用例不是您可以从其他任何对象显式调用的东西。
如果要创建需要在套件设置中运行的可重用组件,则它必须是用户关键字而不是测试用例。
如果您希望整个套件在单个测试用例失败时停止运行,则可以使用-X
/--exitonfailure
命令行选项。另一个选择是创建一个调用内置关键字Fatal error
答案 1 :(得分:0)
Suite Setup
和Suite Teardown
旨在在执行测试用例之前和之后执行一系列步骤。您可以想到Suite Setup
与手动测试用例中的Pre-requisite/Pre-condition
类似。仅当设置失败时才执行整个套件才有意义(对于机器人而言就是如此)。
如果套件设置和拆卸中的关键字本身就是测试用例,我建议您在另一个套件中将它们作为测试用例执行。
针对以下情况,有几种解决方法:
假设:
- 套件设置和拆卸中的各个关键字彼此独立(即),如果套件设置中有两个关键字
Keyword 1
和Keyword 2
,则它们彼此不依赖。对于套件拆解中的关键字也是如此。- 测试用例仅取决于setup和tear-down关键字之一(即),如果套件设置中有两个关键字
Keyword 1
和Keyword 2
,则每个测试用例都取决于仅使用其中一个关键字。
Workaround 1:
使用Test Setup
和Test Teardown
settings。这样,您就只能使设置失败的测试用例失败,然后在失败时重新运行。
Workaround 2:
将测试用例移至2个不同的套件,并使用Suite Setup
和Suite Teardown
来配置各自的节点。
注意:在以上两种情况下,您都必须将设置和拆卸过程中的测试用例移至其他套件。是的,您最终将需要维护多个套件,但是我相信这样可以更轻松地维护这样一个脚本,而不用弄乱一个套件。
如果上述假设无效,那么在套件中重新运行失败的测试确实没有意义。