RobotFramework:空变量检查突然不再工作



我在玩命令行参数,在有/没有给出命令行参数的情况下都能工作,但如果我不给出命令行自变量,它突然开始失败。

Onhttps://groups.google.com/g/robotframework-users/c/_5Usp-K4Dlw?pli=1我读到在变量前面添加一个空格并将其与类似'${ VAR}'==<value>的值进行比较,可以检查变量是否存在。

以前工作的代码片段是:

*** Test Cases ***
My test
[Documentation]    test to check if the SUT reacts as expected
${is_test}=        Evaluate    '${ VAR}'=='test'
Log To Console     ${is_test}
Run Keyword If     ${is_test}    Log To Console    VAR == test

将代码更改为后(删除了"[文档]",因为它是从另一个测试中复制的(:

*** Test Cases ***
My test
${is_test}=        Evaluate    '${ VAR}'=='test'
Log To Console     ${is_test}
Run Keyword If     ${is_test}
...    Log To Console    VAR == test

它突然开始失败,出现:CCD_ 2错误。在将其更改回原来的版本后,它仍然失败。

我想不出我在找零时做错了什么。

注:我工作的公司使用RobotFramework 3.0.4版本(是的,我知道古代(

通过将具有某些默认值的${VAR}添加到*** Variables ***列表来解决此问题。但我仍然不明白为什么它最初在没有这个列表的情况下工作。

如果您想检查变量是否为空并在此基础上执行操作,那么测试应该是什么样子的。

*** Variables ***
${VAR}=    test
*** Test Cases ***
My test
Run Keyword If    '${VAR}'=='${EMPTY}'    Log To Console    Variable is empty
...    ELSE    Log To Console    Variable is not empty                                                         

如果您希望变量默认值为空,并且只有当它来自命令行时才执行某些关键字,请将变量设置为空,例如:

*** Variables ***
${VAR}=    ${EMPTY}
*** Test Cases ***
My test
Run Keyword If    '${VAR}'=='${EMPTY}'    Log To Console    Variable is not set
...    ELSE    Log To Console    Variable is ${VAR}                                                         

从命令行运行测试,不传递变量

$ robot sample.robot 
==============================================================================
Sample                                                                        
==============================================================================
My test                                                               Variable is not set
My test                                                               | PASS |
------------------------------------------------------------------------------
Sample                                                                | PASS |
1 test, 1 passed, 0 failed
==============================================================================

现在,使用传递变量运行

$ robot -v VAR:test sample.robot 
==============================================================================
Sample                                                                        
==============================================================================
My test                                                               Variable is test
My test                                                               | PASS |
------------------------------------------------------------------------------
Sample                                                                | PASS |
1 test, 1 passed, 0 failed
==============================================================================

附言:关于变量内部的空格,我认为这只是谷歌群组中的拼写错误。若它是有效的,那个么变量可能是全局可访问的或在其他地方定义的。

最新更新