如何访问Yaml文件中另一个变量内的变量?

时间:2018-08-30 00:43:56

标签: python variables yaml robotframework

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

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

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

xyz.com/user=${userId}

1 个答案:

答案 0 :(得分:2)

在YAML中,可以将另一个值引用为完整值,而不能将其与另一个变量或字符串组合在一起。在Resource and variable files的《机器人框架指南》一章中,有几个选项说明了其中哪个YAML variable files

请务必注意,这些变量是全局级别变量。这意味着可以将它们导入一个文件,然后从另一个文件访问。这可以是测试用例文件,也可以是仅包含关键字的资源文件。

在下面的示例中,所有内容都在同一文件中,但可以轻松将其拆分为多个文件。通常通过command line argument添加变量文件,这些关键词与Resource Files中的测试用例分开。

variables.yaml

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

robot_script.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变量文件。在《机器人框架指南》中,Implementing variable file as Python or Java class上有一章,其中包含一些有关如何执行此操作的良好而简单的代码示例。这可能会给您带来更大的灵活性,您可以尝试返回正确的变量值集。