[robotframework]为什么创建一个空元素到列表可以视为True,但不适用于空变量

[robotframework]Why Create a empty element to a list can treat as True, but not applicable to a empty variable

为列表创建一个空元素,return 使用“Should Be True”关键字的真值。但不适合创建空 variable.Why 是吗? 代码:

${list1}    Create List    ${EMPTY}
${list2}    Set Variable    ${EMPTY}
Should Be True    ${list1}    Create empty list
Should Be True    ${list2}    Set empty variable

日志:

20211225 14:24:58.913:信息:${list1} = ['']

20211225 14:24:58.916:TRACE:参数:['']

20211225 14:24:58.916:跟踪:Return:''

20211225 14:24:58.917:信息:${list2} =

20211225 14:24:58.918:TRACE:参数:[[''] | 'Create empty list']

20211225 14:24:58.918:跟踪:Return:None

20211225 14:24:58.919 : TRACE : 参数: [ '' | 'Set empty variable']

20211225 14:24:58.920:失败:计算表达式“”失败:ValueError:表达式不能为空。

这有点违反直觉,因为 ${list1} Create List ${EMPTY} 不是在创建一个空列表,而是一个内部包含空元素的列表,例如[''],而 ${list2} Set Variable ${EMPTY} 将创建一个空变量,例如''。这就是为什么 Should Be True 通过列表(列表不为空)但在变量上失败(变量为空)的原因。

下面的代码举例说明了这些情况:

    # empty_list == []
    ${empty_list} =     Create List
    log to console      ${empty_list}
    should be empty     ${empty_list}

    # empty_list_1 == ['']
    ${empty_list_1} =    Create List    ${EMPTY}
    log to console       ${empty_list_1}
    should not be empty  ${empty_list_1}

    # empty_var == '' (empty string with length 0)
    ${empty_var} =       Set Variable
    log to console       ${empty_var}
    should be empty      ${empty_var}

    # empty_var_1 == '' (empty string with length 0)
    ${empty_var_1} =     Set Variable    ${EMPTY}
    log to console       ${empty_var_1}
    should be empty      ${empty_var_1}