robotframework - 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.
------------------------------------------------------------------------------
这里发生了什么?第二次打印时的参数,但在第一次时被忽略。
解决方案
不同之处在于,在一种情况下您正在调用run keywords
(带参数),而在另一种情况下您正在运行print
(带参数)。
我们可以重新格式化您的代码以显示机器人如何看待它:
run keyword if ${x} == 1
... run keywords print hi
... ELSE
... print hi
当表达式为假时,您会跌倒并运行print hi
,一切正常。
当情况属实时,机器人运行run keywords print hi
。run keywords
将其每个参数视为单独的关键字来运行,因此它尝试运行print
,然后尝试运行hi
。由于您没有提供打印参数,因此它会引发错误。
推荐阅读
- flutter - Flutter,确认构建过程中使用了哪个签名密钥
- excel - 声明 iribboncontrol 并设置 id
- powershell - 如何使用 name=value 解决 convertfrom-stringdata 错误
- android - 如何在超类型列表中添加两个类,PhoneStateListener 和 AppCompatActivity
- c++ - 如何将普通扫描码翻译成 ascii 字符
- python - Python tkinter 说按钮未定义。我是新手,所以请帮忙。我也导入了 tkinter 和按钮类。它出现但单击时显示错误
- plot - 有没有办法用 Julia 语言绘制线性规划的解、可行区域和最优解?
- python - Python将纪元时间转换为带有日期的白天或夜晚
- javascript - HTML 输入未在粘贴时更新
- python - 如何通过流从 dynamodb 推送数据