首页 > 解决方案 > 如何访问yaml文件中另一个变量中的变量?

问题描述

我有一个 Variables.yaml 文件,如下所示:

userId: 12
URL: xyz.com/user=${userId}

上面的问题是,变量没有被替换,在运行时我的 URL 看起来像:

xyz.com/user=${userId}

标签: pythonvariablesyamlrobotframework

解决方案


在 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 类,其中包含几个关于如何执行此操作的良好且简单的代码示例。这可能会给您带来更大的灵活性,您可以寻求返回正确的变量值集。


推荐阅读