我是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)
我似乎无法在机器人文档中找到任何信息以及在点符号之外检索字典键的其他方法。有什么建议吗?
答案 0 :(得分:3)
点符号的使用只是一种便利。您仍然可以通过正常方式访问它们(在&{NAME}[key]
的用户指南的dictionary variables部分中记录):
&{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