robotframework - Robotframework 获得重复迭代
问题描述
在机器人框架中,我使用重复调用关键字 x 次。我想要的是在被调用的关键字中获取迭代次数。
我尝试了什么:
${iteration} = 0
*** Test Cases ***
Start Test
repeat keyword ${duration} Run test iteration ${iteration}
*** Keywords ***
Run test iteration ${loop}
${iteration}= Set Variable evaluate ${iteration}+1
我所期望的是,在报告中,被调用的关键字看起来像:
Run test iteration 0
Run test iteration 1
Run test iteration 2
但我看到
Run test iteration 0
Run test iteration 0
Run test iteration 0
是否有可能得到我预测的结果?
使用机器人框架 3.1.1
解决方案
是的,它是,这一切都归结为变量范围。
当您在关键字中进行赋值时,该变量具有关键字本地的范围 - 它在其中可见(而不是调用它的潜在关键字),并且在关键字完成时被删除。这与它与“变量”部分中定义的名称相同 - 您实际上是在重新定义一个具有相同名称的新名称,例如覆盖它。并且不以任何方式改变“全球”的价值。
然后在下一个循环中重复此操作,因此每次运行都会得到 0。
修复很简单——在改变值之后,声明你希望这个变量在更高的范围内可见(高于当前关键字)。您可以选择 3 - 案例级别、套件或全局(因此所有后续套件和案例都可以使用它);这是案例级别:
Run test iteration ${loop}
${iteration}= Evaluate ${iteration}+1
Set Test Variable ${iteration}
推荐阅读
- reactjs - 从 React Hook 测试中获取状态
- list - groovy:使用 compileStatic 将接口实现列表转换为映射
- php - PHP / Symfony 问题“未知记录属性”
- markdown - 在 JupyterLab 笔记本中的 IPython.display Markdwon 中更改字体大小并使文本更粗
- arrays - 在 C 中初始化一个数组
- azure - Web 应用环境变量上的 Azure Linux 容器
- android-studio - 在 Android Studio Gradle 项目中处理 applicationId 的问题
- filter - CYPRESS - 使过滤器选择器中的“:contains()”不区分大小写
- encoding - 霍夫曼树 - 给出完美树的最高可能频率
- arcgis - QGIS批处理面临错误?