我正在尝试分配变量 - body
,具体取决于另一个变量phonenumber_id
的状态。如果phonenumber_id
为NULL
,body
会被指定为假
但它似乎没有奏效。仅当phonenumber_id
不是NULL
时,它才有效。
${body}= Run keyword if '${phonenumber_id}'!='NULL' Set variable TRUE
... Else Set Variable FALSE
不确定我做错了什么。
答案 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}