集成测试-机器人框架:用if-else语句分配变量



我使用最新的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.

我怎么写呢?

既然你正在调用运行关键字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})

最新更新