我遇到了冻结测试,但实际上它被卡在了重试循环中。
Wait Until Keyword Succeeds | 60 sec | 12 sec
第一个参数是尝试的超时,第二个参数是重试间隔。但是,如果任务在大型数据集上类似“Xpath应该匹配X次”,它可能永远不会在给定时间内成功,下一次尝试将从头再次开始。
有没有办法在这种情况下限制最大重试次数?
答案 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。