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

Robotframework 运行Run关键字If-else后如何分配变量?,robotframework,Robotframework,我正在尝试分配一个变量-body,具体取决于另一个变量的状态phonenumber\u id。如果phonenumber\u id为NULL,body被分配为False。 但它似乎不起作用。只有当他phonenumber\u id不是NULL时,它才起作用 ${body}= Run keyword if '${phonenumber_id}'!='NULL' Set variable TRUE ... Else Set Variable

我正在尝试分配一个变量-
body
,具体取决于另一个变量的状态
phonenumber\u id
。如果
phonenumber\u id
NULL
body
被分配为False。
但它似乎不起作用。只有当他
phonenumber\u id
不是
NULL
时,它才起作用

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

不知道我做错了什么

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

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

你几乎答对了-只是打错了ELSE-它必须是大写字母,如果,则被视为
Run关键字的一部分。所以在你的特殊情况下,应该是:

${body}=    Run keyword if  '${phonenumber_id}'!='NULL'     Set variable    TRUE
...         ELSE            Set Variable    FALSE
对于只设置一个新常量值的简单情况,@ILostMySpoon已经足够好了,而且更“可读”


一般来说,对于在这篇文章中结结巴巴的人来说,
Run关键字If
ELSE Set变量
相结合是设置/更改变量的一个非常强大的构造,因为它不仅有条件地运行关键字,而且还将其返回值传播回堆栈

考虑这个例子:

${var}=    Run Keyword If    ${bool condition}   Do Some Action Returning A Value    
           ...    ELSE    Set Variable    ${var}
在它中,
{var}
将被设置为
的返回值,仅当
${bool condition}
的计算结果为true时,才执行返回值的操作,否则将保留其旧值

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

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

“不工作”是什么意思?您是否收到错误,或者无论
${phonenumber\u id}
是什么,它总是将其设置为相同的值?另外,您是想对照字符串
“NULL”
,还是对照python值
None
?当第一个条件为true时,它为${body}分配了这个
Set变量true。。。否则将变量设置为FALSE
,但如果编辑您的答案,我会很高兴地删除downvote。