2016-11-29 72 views
1

我是Robot Framework的新手,正在尝试验证从Web服务返回的某些JSON的内容。问题是json对象的某些属性在它们中有破折号,而Robot似乎并不喜欢这样。我有类似如下机器人框架:从字典中检索包含破折号的密钥

&{deployment} = list deployment ${deployment_name} 
&{changeSets} = Set Variable ${deployment.ChangeSets} 
&{myChangeSet} = Set Variable ${changeSets.my-change-set} 

Should Be True ${myChangeSet.UseLocal} 
Should Be Equal As Strings ${myChangeSet.Version} ${update_version} 

但与下面的错误3号线机器人失败:

Resolving variable '${changeSets.my-change-set}' failed: AttributeError: my 

我试图逃跑破折号但似乎仍然没有工作:

Resolving variable '${changeSets.my\-change\-set}' failed: SyntaxError: unexpected character after line continuation character (<string>, line 1) 

我似乎无法在机器人文档中找到任何信息,以其他方式检索点符号之外的代码键。有什么建议么?

+3

只是一种猜测,但你尝试过'$ {变更[“我改变设置”]}'? –

+0

@ErikAllik嘿!那工作。我想你可以在大括号内使用python符号...不知道为什么我没有想到这一点。 –

回答

3

使用点符号只是一个方便。您仍然可以访问他们以正常的方式(在用户指南的dictionary variables部分为&{NAME}[key]记录):

&{changeSets}[my-change-set] 

或者与extended variable syntax,这里面{}把一切作为一个Python表达式:

${changeSets['my-change-set']} 

下面是说明这两种方法的工作示例:

*** Variables *** 
&{changeSets} my-change-set=foo 

*** Test Cases *** 
Test 1 
    should be equal ${changeSets['my-change-set']} foo 

Test 2 
    should be equal &{changeSets}[my-change-set] foo 
相关问题