繁体   English   中英

如何在套件设置中运行测试用例?

[英]How to run test cases as part of suite setup?

我正在使用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,并且仍然能够在安装和拆卸中运行单个测试?

如何在套件设置中运行测试用例?

你不能 测试用例不是您可以从其他对象显式调用的对象。

如果要创建需要在套件设置中运行的可重用组件,则它必须是用户关键字而不是测试用例。

如果您希望整个套件在单个测试用例失败时停止运行,则可以使用-X / --exitonfailure命令行选项。 另一个选择是创建一个调用内置关键字致命错误的测试拆卸项

Suite SetupSuite Teardown旨在在执行测试用例之前和之后执行一系列步骤。 您可以认为Suite Setup类似于手动测试用例中的Pre-requisite/Pre-condition 仅当设置失败时才执行整个套件才有意义(对于机器人而言就是如此)。

如果套件设置和拆卸中的关键字本身就是测试用例,建议您将它们作为另一个套件中的测试用例执行。

如果满足以下假设,则有两种解决方法:

假设:

  1. 套件设置和拆卸中的各个关键字彼此独立(即),如果套件设置中有2个关键字,即Keyword 1Keyword 2 ,则它们彼此不依赖。 对于套件拆解中的关键字也是如此。
  2. 测试用例仅取决于设置和拆卸关键字之一(即),如果套件设置中有2个关键字,即Keyword 1Keyword 2 ,则每个测试用例仅取决于一个关键字。

Workaround 1:

使用“ Test Setup和“ Test Teardown 设置 这允许您仅使设置失败的测试用例失败,然后在失败时重新运行。

Workaround 2:

将测试用例移至2个不同的套件,并使用Suite SetupSuite Teardown来配置各自的节点。

注意:在以上两种情况下,您都必须将设置和拆卸过程中的测试用例移至其他套件。 是的,您最终将需要维护多个套件,但是我相信这样可以更轻松地维护这样一个脚本,而不用弄乱一个套件。

如果上述假设无效,则在套件中重新运行失败的测试确实没有意义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM