如何在机器人框架中设置相关的全局变量

How to set dependent global variables in robot framework

我有一个资源文件,其中包含一个依赖于另一个全局变量的全局变量。

${VAR1}    ${EMPTY}
${VAR2}    some_value/${VAR1}.json

在我的测试用例中,我使用 set global variable 关键字

设置了 ${VAR1} 的值
set global variable  ${VAR1}  foo
log  ${VAR1}
log  ${VAR2}

我期待 ${VAR1} 的更新反过来也会更新 ${VAR2},所以输出应该是:

foo
some_value/foo.json

而不是

foo
some_value/${EMPTY}.json

${Var2} 由命令行传递,优先级最高。 为了覆盖它,您需要在关键字文件中再次定义 ${var2},就像您对 ${var1}

所做的那样

例子

set Suite variable  ${VAR1}  foo
set Suite variable  ${VAR2}  some_value/${VAR1}.json

你也可以参考这个答案

在这种情况下,您不需要为 ${VAR1}

分配任何内容

只需在变量部分中声明 ${VAR1} 没有值。 例如

*** variables ***
${VAR1}    
${VAR2}    some_value/${VAR1}.json

在测试套件中,您需要将 VAR2 声明为全局变量。在测试套件中声明 VAR2 后,每次更新 VAR1 时都会更新 VAR2 的值。

Sample Test
    log to console  ${VAR1}
    log to console  ${VAR2}
    set global variable  ${VAR1}  foo
    ${VAR2}=  set variable  test/ ${VAR1}
    set global variable  ${VAR2}
    log to console   ${VAR1}
    log to console   ${VAR2}
    set global variable  ${VAR1}  foo2

VAR2 的值现在将是 test/foo2

log to console   ${VAR1}
log to console   ${VAR2}