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



为列表创建一个空元素,并用"应该是真的"关键词。但不适合创建空变量。为什么?代码:

${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:跟踪:返回:">

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

20211225 14:24:58.918:TRACE:参数:[['']|'创建空列表']

20211225 14:24:58.918:TRACE:返回:无

20211225 14:24:58.919:TRACE:参数:["|"设置空变量"]

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}

最新更新