2016-11-29 36 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 
相關問題