RobotFramework:空变量检查突然不再工作
RobotFramework: empty variable check suddenly not working anymore
我正在玩弄命令行参数,并且在有/没有提供命令行参数的情况下都有一些工作,但是如果我不提供命令行参数,它突然开始失败。
在 https://groups.google.com/g/robotframework-users/c/_5Usp-K4Dlw?pli=1 上,我读到在变量前添加一个 space 并将其与这样的值进行比较 '${ 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
将代码更改为(删除了“[Documentation]”,因为它是从另一个测试中复制的):
*** Test Cases ***
My test
${is_test}= Evaluate '${ VAR}'=='test'
Log To Console ${is_test}
Run Keyword If ${is_test}
... Log To Console VAR == test
它突然开始失败并出现:Variable '${ VAR}' not found.
错误。
改回原来的还是不行
我不知道我在更改中做错了什么。
注意:我工作的公司使用 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
==============================================================================
P.S。关于 space 内部变量,我认为这只是 Google 组中的错字。如果它正在工作,那么变量可能是全局可访问的或在其他地方定义的。
我正在玩弄命令行参数,并且在有/没有提供命令行参数的情况下都有一些工作,但是如果我不提供命令行参数,它突然开始失败。
在 https://groups.google.com/g/robotframework-users/c/_5Usp-K4Dlw?pli=1 上,我读到在变量前添加一个 space 并将其与这样的值进行比较 '${ 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
将代码更改为(删除了“[Documentation]”,因为它是从另一个测试中复制的):
*** Test Cases ***
My test
${is_test}= Evaluate '${ VAR}'=='test'
Log To Console ${is_test}
Run Keyword If ${is_test}
... Log To Console VAR == test
它突然开始失败并出现:Variable '${ VAR}' not found.
错误。
改回原来的还是不行
我不知道我在更改中做错了什么。
注意:我工作的公司使用 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
==============================================================================
P.S。关于 space 内部变量,我认为这只是 Google 组中的错字。如果它正在工作,那么变量可能是全局可访问的或在其他地方定义的。