python - 如何访问yaml文件中另一个变量中的变量?
问题描述
我有一个 Variables.yaml 文件,如下所示:
userId: 12
URL: xyz.com/user=${userId}
上面的问题是,变量没有被替换,在运行时我的 URL 看起来像:
xyz.com/user=${userId}
解决方案
在 YAML 中,可以引用另一个值,但只能作为完整值而不是与另一个变量或字符串组合。在有关资源和变量文件的机器人框架指南一章中,有几个选项解释了哪些YAML 变量文件是其中之一。
重要的是要注意这些变量是全局级别的变量。这意味着它们可以导入到一个文件中,然后从另一个文件中访问。这可以是测试用例文件或仅包含关键字的资源文件。
在下面的示例中,所有内容都在同一个文件中,但可以轻松地将其拆分为多个文件。通常通过命令行参数添加变量文件,关键字与资源文件中的测试用例分开。
变量.yaml
userId: 12
URL: xyz.com/user=${userId}
机器人脚本.robot
*** Settings ***
Library Collections
Variables variables.yaml
*** Test Cases ***
TC
${userId} Set Variable MyUserName
Log To Console \n ${URL}
${URL} Replace Variables ${URL}
Log To Console ${URL}
这将导致以下控制台输出
==============================================================================
TC
xyz.com/user=${userId}
xyz.com/user=MyUserName
| PASS |
------------------------------------------------------------------------------
另一种方法是从 YAML 转移到 Python 变量文件。在 Robot Framework Guide 中有一章关于将变量文件实现为 Python 或 Java 类,其中包含几个关于如何执行此操作的良好且简单的代码示例。这可能会给您带来更大的灵活性,您可以寻求返回正确的变量值集。
推荐阅读
- android - 如何在android中的同一应用程序的最近任务中显示两个不同的活动?
- deep-learning - 用于 RNN 的最有效张量格式(填充与打包、时间主要与批处理主要)
- rpa - UiPath 在测试任何活动时反序列化当前 JSON 对象错误
- javascript - 如何在计算重复时删除数组中的重复值?
- java - 一个系统上的 RestTemplate/FeignClient SSL 异常
- reactjs - 如何向 React FlatPickr 添加名称和 ID 属性?
- c - 表达式中的严格别名
- javascript - 似乎无法获得在 AJAX 调用上运行的第一个依赖项
- react-native - 如何将 react 17 的新 JSX 转换与 react-native 0.64.0 (rc4) 结合使用?
- python - bin光曲线后的Lightkurve nan值