我在玩命令行参数,在有/没有给出命令行参数的情况下都能工作,但如果我不给出命令行自变量,它突然开始失败。
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
==============================================================================
附言:关于变量内部的空格,我认为这只是谷歌群组中的拼写错误。若它是有效的,那个么变量可能是全局可访问的或在其他地方定义的。