最大重试次数

时间:2014-05-07 20:17:19

标签: robotframework

我遇到了冻结测试,但实际上它被卡在了重试循环中。

Wait Until Keyword Succeeds | 60 sec | 12 sec

第一个参数是尝试的超时,第二个参数是重试间隔。但是,如果任务在大型数据集上类似“Xpath应该匹配X次”,它可能永远不会在给定时间内成功,下一次尝试将从头再次开始。

有没有办法在这种情况下限制最大重试次数?

3 个答案:

答案 0 :(得分:3)

你的情况有点奇怪,因为理论上没有“无限重试循环”这样的事情,等待关键字成功,因为第一个参数不是“尝试超时”,而是“所有尝试的全局超时”。所以在你的情况下,它会每12秒尝试一次,并在60秒后停止。也许您应该重新考虑使用此信息的价值。

要回答您的问题,无法(AFAIK)提供最多尝试次数。我对某些关键字有这样的需求,我想出了自己的自定义关键字:

Run_keyword_n_times_and_stop_if_success
    [Arguments]  ${keyword}  ${number_tries}
    :FOR  ${index}  IN RANGE  ${number_tries}
    \  ${result}  ${error_message} =  Run Keyword And Ignore Error  ${keyword}
    \  Pass Execution If  '${result}' == 'PASS'  keyword execution was successful
    Fail  ${error_message}

这仅适用于没有参数的关键字,但可能对您有所帮助(或者因为您没有args,或者因为您可以详细说明第一个版本)

答案 1 :(得分:0)

感谢您重试关键字。将它与带参数的关键字一起使用。

Run Keyword N Times And Stop If Success
[Arguments]    ${number_tries}    ${keyword}    @{args}
: FOR    ${index}    IN RANGE    ${number_tries}
\    ${result}    ${error_message} =    Run Keyword And Ignore Error    ${keyword}    @{args}
\    Pass Execution If    '${result}' == 'PASS'    keyword execution was successful
Fail    ${errorLog_message}

样本用法:

@{args}    Create List    @{User}    ${Url}    ${Browser}
Run Keyword N Times And Stop If Success    5    Login    @{args}

答案 2 :(得分:0)

April 2015起,已将其实现为关键字的参数。 用法示例可以看成是:

Wait Until Keyword Succeeds | 5x | 30 sec | Flaky Keyword

有关关键字的更多信息,请参见BuiltIn documentation