Robotframework 如何使用Run关键字if计算变量?

Robotframework 如何使用Run关键字if计算变量?,robotframework,Robotframework,我正在尝试更新变量${value}和${value\u count}: test with FOR ${value} evaluate 2 @{list} set variable 1 2 3 4 5 FOR ${i} IN @{list} ${type_value} evaluate type(${value}) log ${type_value}

我正在尝试更新变量${value}和${value\u count}:

    test with FOR
        ${value}    evaluate  2
        @{list}     set variable  1  2  3  4  5
        FOR  ${i}  IN  @{list}
            ${type_value}   evaluate  type(${value})
            log  ${type_value}
            ${value}        run keyword if  $i in $list  evaluate  ${value} - 1
            log  ${value}
        END
第一个通过,但随后失败

    another test
        @{value}                            set variable  2  4
        @{result}                           set variable  1  2  3  4  5
        ${list_length}                      get length  ${result}
        ${value_count}                      get length  ${value}
        FOR     ${i}   IN  @{result}
            ${type_value}                   evaluate  type(${value_count})
            log  ${type_value}
            log  ${value_count}
            ${value_count}=                 run keyword if  $i in $value  evaluate  ${value_count} - 1
            log  ${value_count}
            exit for loop if                $i in $value and $value_count == 0
            ${list_length}                  evaluate  ${list_length} - 1
        END
        should not be equal as integers     ${list_length}  0

我不确定测试用例的目标是什么,但在执行以下行时

${value_count}=                 run keyword if  $i in $value  evaluate  ${value_count} - 1
如果条件为False,则变量将设置为None,因此当尝试从None中减去1时,您将得到一个错误。我在该行中添加了一个Else,因此如果条件为False,那么变量将保持相同的值

test with FOR
${value}    evaluate  2
@{list}     set variable  1  2  3  4  5
FOR  ${i}  IN  @{list}
    ${type_value}   evaluate  type(${value})
    log  ${type_value}
    ${value}        run keyword if      $i in $list     evaluate  ${value} - 1
    ...    ELSE         set variable        ${value}
    log  ${value}
END


another test
    @{value}                            set variable  2  4
    @{result}                           set variable  1  2  3  4  5
    ${list_length}                      get length  ${result}
    ${value_count}                      get length  ${value}
    FOR     ${i}   IN  @{result}
        ${type_value}                   evaluate  type(${value_count})
        log  ${type_value}
        log  ${value_count}
        ${value_count}=                 run keyword if          $i in $value        evaluate  ${value_count} - 1
        ...    ELSE                        set variable        ${value_count}
        log  ${value_count}
        exit for loop if                $i in $value and ${value_count} == 0
        ${list_length}                  evaluate  ${list_length} - 1
    END
    should not be equal as integers     ${list_length}  0