机器人框架:从字典中检索包含破折号的密钥
问题描述:
我是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)
我似乎无法在机器人文档中找到任何信息,以其他方式检索点符号之外的代码键。有什么建议么?
答
使用点符号只是一个方便。您仍然可以访问他们以正常的方式(在用户指南的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
只是一种猜测,但你尝试过'$ {变更[“我改变设置”]}'? –
@ErikAllik嘿!那工作。我想你可以在大括号内使用python符号...不知道为什么我没有想到这一点。 –