首页 > 解决方案 > if 语句中的参数被忽略 1/2 的时间

问题描述

*** variables ***
${x}    0
*** Test Cases ***
Test1
    run keyword if   ${x} == 1    run keywords
    ...    print    hi
    ...    ELSE
    ...    print    hi
Test2
    run keyword if   ${x} == 0    run keywords
    ...    print    hi
    ...    ELSE
    ...    print    hi    
*** keywords ***
print
   [arguments]   ${x}
   log to console     ${x}

输出:

Test1                                                                 hi
Test1                                                                 | PASS |
------------------------------------------------------------------------------
Test2                                                                 | FAIL |
Keyword 'print' expected 1 argument, got 0.
------------------------------------------------------------------------------

这里发生了什么?第二次打印时的参数,但在第一次时被忽略。

标签: robotframework

解决方案


不同之处在于,在一种情况下您正在调用run keywords(带参数),而在另一种情况下您正在运行print(带参数)。

我们可以重新格式化您的代码以显示机器人如何看待它:

run keyword if   ${x} == 1
...    run keywords    print  hi
...    ELSE
...    print    hi

当表达式为假时,您会跌倒并运行print hi,一切正常。

当情况属实时,机器人运行run keywords print hirun keywords将其每个参数视为单独的关键字来运行,因此它尝试运行print,然后尝试运行hi。由于您没有提供打印参数,因此它会引发错误。


推荐阅读