Robotframework 获取等待关键字成功的重试次数

Robotframework 获取等待关键字成功的重试次数,robotframework,built-in,Robotframework,Built In,我们正在使用Robot框架测试一个很容易出错的组件,我们无法调试它。该组件的行为有些不稳定,因此在一些地方,我们使用关键字等待,直到关键字成功通过SSH连接10x 1s进行多次尝试,即使它在第一次尝试时应该可以工作 不,最好获取关键字的重试次数,以便在需要多次重试时发出警告Log消息 以下片段说明了我想要实现的目标: ${result} ${noRetries}= Wait Until Keyword Suceeds with Return 10x 1s Connect Vi

我们正在使用Robot框架测试一个很容易出错的组件,我们无法调试它。该组件的行为有些不稳定,因此在一些地方,我们使用关键字
等待,直到关键字成功通过SSH连接10x 1s
进行多次尝试,即使它在第一次尝试时应该可以工作

不,最好获取关键字的重试次数,以便在需要多次重试时发出警告
Log
消息

以下片段说明了我想要实现的目标:

${result}   ${noRetries}=   Wait Until Keyword Suceeds with Return   10x   1s   Connect Via SSH
Run Keyword If   ${noRetries}>1     Log   ${noRetries} were necessary for Connect Via SSH   level=WARN

有没有一种方法可以通过Robot框架轻松实现这一点?

我会创建一个更高级别的关键字,其中包含一个不稳定的关键字,并在其中进行增量尝试

编辑。用自定义库示例更新答案(选项B)

库解决方案使Robot文件更干净,因为复杂性被转移到Python端

选项A.

使用Robot框架测试变量

*** Settings ***
Test Setup    Set Test Variable  ${KW_RUNS}  ${0}

*** Keywords ***
Flaky Keyword
    Set Test Variable  ${KW_RUNS}   ${KW_RUNS+1}
    Connect Via SSH

*** Test Cases ***
Trying something here
    ${result}   Wait Until Keyword Succeeds   10   1s   Flaky Keyword
    Run Keyword If   ${KW_RUNS}>1     Log   ${KW_RUNS} were necessary for Connect Via SSH   level=WARN
选项B.

使用Robot框架自定义库

flakylib.py

withlib.robot


我将创建更高级别的关键字,其中包含的关键字是片状的,并在其中进行增量尝试

编辑。用自定义库示例更新答案(选项B)

库解决方案使Robot文件更干净,因为复杂性被转移到Python端

选项A.

使用Robot框架测试变量

*** Settings ***
Test Setup    Set Test Variable  ${KW_RUNS}  ${0}

*** Keywords ***
Flaky Keyword
    Set Test Variable  ${KW_RUNS}   ${KW_RUNS+1}
    Connect Via SSH

*** Test Cases ***
Trying something here
    ${result}   Wait Until Keyword Succeeds   10   1s   Flaky Keyword
    Run Keyword If   ${KW_RUNS}>1     Log   ${KW_RUNS} were necessary for Connect Via SSH   level=WARN
选项B.

使用Robot框架自定义库

flakylib.py

withlib.robot


不使用vanilla关键字-它只返回被调用关键字的结果;它实际上是这样做的:
在try-catch块中返回self.run_关键字(name,*args)
。您可能需要创建一个自定义关键字或python方法,该方法会同时返回结果和重试次数;它实际上是这样做的:
在try-catch块中返回self.run_关键字(name,*args)
。您可能需要创建一个自定义关键字或python方法,该方法将返回结果和重试次数。感谢您的快速回复。我经常使用Wait-Until关键字成功。也许还有一个更通用的解决方案,但我真的不知道怎么做。仍然非常感谢您的解决方案,它至少起作用了。:-)很好,它可以工作:)另一个解决方案是使用关键字创建您自己的customlibrary,它基本上可以完成我在示例中发布的内容。使用选项2,调用方将无法返回被调用关键字的返回值,这在很多情况下可能是必需的。最可靠的方法是重新实现
等待\u,直到\u关键字成功
关键字,同时返回重试次数。感谢您的快速回复。我经常使用Wait-Until关键字成功。也许还有一个更通用的解决方案,但我真的不知道怎么做。仍然非常感谢您的解决方案,它至少起作用了。:-)很好,它可以工作:)另一个解决方案是使用关键字创建您自己的customlibrary,它基本上可以完成我在示例中发布的内容。使用选项2,调用方将无法返回被调用关键字的返回值,这在很多情况下可能是必需的。最可靠的方法是重新实现
等待\u,直到\u关键字成功
关键字,但也返回重试次数。
*** Settings ***
Library  flakylib.py


*** Test Cases ***
Trying something here
    ${status}  ${runs}=  Run Flaky KW  name=Connect Via SSH