gpt4 book ai didi

testing - 在关键字 "Run Keywords"内分配一个变量可能吗?

转载 作者:行者123 更新时间:2023-11-28 19:56:55 25 4
gpt4 key购买 nike

以下代码产生了一些问题:

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}

当我尝试执行它时,我的 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 Keywords”是否不允许对变量进行任何赋值,如果是这样,是否有任何“最佳实践”方法来做我想做的事情?

谢谢!

最佳答案

Run Keywords 确实不允许 赋值,这是真的。这来自解析器——关键字的目的是运行其他的;它到达赋值行 (${passed}= Run...),尝试用它的值替换变量“passed”以便执行它,但此时 var仍未定义 - 它失败了。

看起来你想要做的是仅当条件为真时运行特定关键字 (Setup),并且仅当条件为真时记录其结果,并断言它 (结果)是期望的结果。

这可以通过将 block 一分为二来实现。关键字 Run Keyword If 返回嵌入关键字的值,因此这将起作用:

${passed}=    Run Keyword If    ${run}    Run Keyword And Return Status    Setup          ${url}         ${username}    ${password}
... ELSE Set Variable ${False}

如果 ${run} == True 将运行 Setup 关键字,并且 {passed} 将保存一个 True/False 值执行通过了吗。如果 ${run} != True 我们将 ${passed} 设置为 False,这样它就没有值 None(它的值实际上不是在这种情况下很重要,但这样做可以使其具有的数据类型保持一致)。

现在另外两个关键字可以单独放在一个 if block 中——只有当 ${run} == True 时才起作用:

Run Keyword If    ${run}   Run Keywords     Log To Console         ${passed}
... AND Should Not Be Equal ${fail} ${passed}

关于testing - 在关键字 "Run Keywords"内分配一个变量可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53781034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com