Robot Framework:使用if-else语句赋值变量

时间:2016-06-24 12:27:21

标签: integration-testing robotframework

我使用最新的Robot Framework。 我需要根据参数的值为我的变量赋值。这就是JavaScript中的情况:

ITEM_SELECTOR = RECENT_ITEM_SELECTOR + (
    position === 'last' ? ':last-child' : ':nth-child' + '(' + position + ')'
)

这就是我尝试在Robot Framework中编写它的方法:

${ITEM_SELECTOR} =    Run Keyword If    ${position} == 'last'    ${RECENT_ITEM_SELECTOR}:last-child
...    ELSE    ${RECENT_ITEM_SELECTOR}:nth-child(${position})

但这种方式${RECENT_ITEM_SELECTOR}:nth-child(${position})被视为关键字,未分配给ITEM_SELECTOR

然后我尝试使用No Operation预先发布它,但后来我的返回值被视为其参数,我得到Keyword 'BuiltIn.No Operation' expected 0 arguments, got 1.

我怎么写呢?

1 个答案:

答案 0 :(得分:4)

由于您正在调用run keyword if,因此您必须为其指定一个关键字才能运行。您可以使用set variable使代码正常工作:

${ITEM_SELECTOR} =    Run Keyword If    ${position} == 'last'
...  Set variable    ${RECENT_ITEM_SELECTOR}:last-child
...  ELSE    
...  Set variable    ${RECENT_ITEM_SELECTOR}:nth-child(${position})    

但是,您也可以使用set variable if来获得更紧凑,更易读的解决方案:

${ITEM_SELECTOR} =    Set variable if    ${position} == 'last'
...  ${RECENT_ITEM_SELECTOR}:last-child
...  ${RECENT_ITEM_SELECTOR}:nth-child(${position})