【问题标题】:`Test Case Timeout in robot framework with test case variable instead of variable defined in *** Variables *** section``机器人框架中的测试用例超时,测试用例变量而不是在***变量***部分中定义的变量`
【发布时间】:2020-11-29 04:50:57
【问题描述】:
*** Settings ***
Library         Collections
Documentation    Suite description
Test Timeout    60 minutes

*** Test Cases ***
Test title
${TEST_TIMEOUT1}  set variable  120   
log to console  ${TEST_TIMEOUT1}
[Timeout]  ${TEST_TIMEOUT1} minutes

我正在尝试使用带有变量 ${TEST_TIMEOUT1} 的测试用例时间 [TIMEOUT] 更新默认的 60 分钟测试超时。 我想使用变量而不是硬编码值。 硬编码值[TIMEOUT] 工作正常。但如果我使用测试用例变量替换,则会出现以下错误

设置测试超时失败:找不到变量“${TEST_TIMEOUT1}”。 你能帮忙解决这个问题吗?

【问题讨论】:

    标签: python automated-tests timeout robotframework


    【解决方案1】:

    问题是

    *** Test Cases ***
    Test title
        ${TEST_TIMEOUT1}  set variable  120   
        log to console  ${TEST_TIMEOUT1}
        [Timeout]  ${TEST_TIMEOUT1} minutes
    

    不按此顺序执行。 [Timeout] 属于测试用例设置,所以它在前两行之前执行。毕竟是设置,所以先执行然后运行实际的测试步骤是有意义的。

    解决方法很简单,在测试用例之外定义${TEST_TIMEOUT1},例如:

    *** Settings ***
    Test Timeout    60 minutes
    
    *** Variables ***
    ${TEST_TIMEOUT1}=    120 minutes
    
    *** Test Cases ***
    Test title
        [Timeout]  ${TEST_TIMEOUT1}
    

    那么默认超时将为 60 分钟,但在测试标题中它将被覆盖并使用 120 分钟的值。

    进一步阅读:

    【讨论】:

    • 谢谢...实际上我会从字典中提取 TEST_TIMEOUT1,而 TEST_TIMEOUT1 不是直接提取的关键,必须添加一些参数,输出将存储在 TEST_TIMEOUT1 中。所以要阅读字典并处理我在测试用例中所做的数据并将值分配给 TEST_TIMEOUT1。有没有其他方法可以在测试用例中提取 TEST_TIMEOUT1 并再次定义变量。?
    • 阅读用户指南和实验。底线是您需要在[Timeout] 中使用它之前设置变量。用户指南在此处显示了一些示例:robotframework.org/robotframework/latest/… 这也是您需要这样做的方式。
    猜你喜欢
    • 2013-01-23
    • 2017-11-29
    • 2016-04-25
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    相关资源
    最近更新 更多