Far*_*ram 6 testing automated-tests robotframework
以下代码产生了一些问题:
API Setup
[Arguments] ${url} ${username} ${password} ${run}=True ${fail}=False
Run Keyword If ${run}
... Run Keywords
... ${passed}= Run Keyword And Return Status Setup ${url} ${username} ${password}
... AND Log To Console ${passed}
... AND Should Not Be Equal ${fail} ${passed}
Run Code Online (Sandbox Code Playgroud)
当我尝试执行它时,我的 RF 说:Variable '${passed}' not found.
RED IDE 还说
Multiple markers at this line:
• Variable 'passed' is used, but not defined
• Keyword name '${passed}=' contains variables. RED is unable to validate
arguments given to this keyword
Run Code Online (Sandbox Code Playgroud)
关键字“运行关键字”是否不允许为变量分配任何值,如果是,是否有任何“最佳实践”方法可以做我想做的事情?
谢谢!
Run Keywords不允许分配,这是真的。这来自解析器 - 关键字的目的是运行其他的;它到达带有赋值(${passed}= Run...)的行,尝试用其值替换“传递”的变量,以便它可以执行它,但此时 var 仍然未定义 - 并且失败。
看起来您想要做的是Setup仅当条件为真时才运行特定关键字 ( ),并且仅当条件为真时才记录其结果,并断言它(结果)是所需的结果。
这可以通过将块分成两部分来实现。关键字Run Keyword If返回嵌入关键字的值,因此这将起作用:
${passed}= Run Keyword If ${run} Run Keyword And Return Status Setup ${url} ${username} ${password}
... ELSE Set Variable ${False}
Run Code Online (Sandbox Code Playgroud)
如果${run} == True关键字Setup将被运行,并且{passed}将保存 True/False 值,则执行通过。如果 ${run} != True我们设置${passed}为 False,那么它的值就不会为 None(在这种情况下,它的值并不重要,但这样做可以保证它所具有的数据类型的一致性)。
现在,其他两个关键字可以单独位于 if 块中 - 仅在以下情况下执行其工作${run} == True:
Run Keyword If ${run} Run Keywords Log To Console ${passed}
... AND Should Not Be Equal ${fail} ${passed}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3507 次 |
| 最近记录: |