如何在运行Run关键字If - else后分配变量?

时间:2015-04-02 22:36:27

标签: robotframework

我正在尝试分配变量 - body,具体取决于另一个变量phonenumber_id的状态。如果phonenumber_idNULLbody会被指定为假 但它似乎没有奏效。仅当phonenumber_id不是NULL时,它才有效。

${body}=    Run keyword if  '${phonenumber_id}'!='NULL'     Set variable    TRUE
...         Else            Set Variable    FALSE   

不确定我做错了什么。

2 个答案:

答案 0 :(得分:12)

关键字Set Variable If将根据给定条件设置变量

${body}=    Set Variable If    '${phonenumer_id} != 'NULL'
...    ${True}    ${False}

答案 1 :(得分:1)

你得到的几乎是正确的 - 只是错误输入了ELSE - 它必须是大写字母,才能被视为Run Keyword If的一部分。所以在你的特定情况下,它应该是:

${body}=    Run keyword if  '${phonenumber_id}'!='NULL'     Set variable    TRUE
...         ELSE            Set Variable    FALSE

对于仅设置新常量值的简单情况,@ ILostMySpoon answer足够好 - 而且更多"可读"。

一般情况下,对于在这篇文章上绊倒的人来说,Run Keyword If结合ELSE Set Variable是一个非常强大的构造来设置/更改变量 - 基于它不仅运行关键字这一事实( s)有条件地,但也将其返回值传播回堆栈。

考虑这个例子:

${var}=    Run Keyword If    ${bool condition}   Do Some Action Returning A Value    
           ...    ELSE    Set Variable    ${var}

只有当{var}评估为true时,Do Some Action Returning A Value才会设置为${bool condition}的返回值,否则将保留其旧值。

另一个人为但不那么抽象的例子:

    ${value}=    Run Keyword If    ${should be int}     Convert To Integer   ${value}
                 ...    ELSE IF    ${should be float}   Convert To Number    ${value}
                 ...    ELSE    Set Variable    ${value}