2017-12-03 13 views
1

コード1は機能しますが、部分的にハードコードされているため、すべてのキー値のペアを同時に表示します。ここでループオーバーループの後に表示される辞書のキーと値のペアを表示する方法

*** Test Cases *** 
Code1 
    #get json file 
    ${json_data}= Get file detail.json 
    #get dictionaries under list 
    ${data}= evaluate json.loads($json_data) json 
    ${alladdress}= get from dictionary ${data} alladdress 
    ${addresslist}= get from dictionary ${alladdress} addresslist 
    # loop over dictionaries under list. I wanted to use loop FOR ${address} in ${addresslist.keys()} but for some reason its not working so i use this code to display key value pair 
    : FOR ${address} in @{addresslist} 
    \ ${city} = Get From Dictionary ${address} city 
    \ ${key}= set variable ${address.keys()} 
    \ ${listkey}= get from list ${key} 0 
    # since i know list 0 is city but its kind of hardcoded 
    \ log to console ${listkey}, ${city} 
    # i am trying to display key value pair using below code but it displays error @{address.keys()}' failed: Variable '${address}' not found. 
Code2 
    #get json file 
    ${json_data}= Get file detail.json 
    ${data}= evaluate json.loads($json_data) json 
    ${alladdress}= get from dictionary ${data} alladdress 
    ${addresslist}= get from dictionary ${alladdress} addresslist 
    # loop over list which contents dictionary object. 
    :FOR ${address} IN @{addresslist} 
    \ Loop over address @{address} 
Loop over items 
    [Arguments] @{address} 
    :FOR ${key} IN @{address.keys()} 
    \ ${value}= Get From Dictionary ${address} ${key} 
    # here i get error @{address.keys()}' failed: Variable '${address}' not 
     found. 
    \ log to console ${key},${value} 

JSONファイルは、あなたがこのコメントを持っているコードで

{"class": {"id": 0,"name": "David"},"alladdress": {"count": 3,"addresslist": [{"houseno": 1,"streetno": 5,"streetname": "tesla","city": "ABC","state": "AA","country": "UK","zip": 85555},{"houseno": 2,"streetno": 6,"streetname": "honda","city": "PQR","state": "BB","country": "IN", "zip": 5252}]}} 

答えて

1

です:${addresslist}はリスト、辞書に載っていないですので:FOR ${address} IN ${addresslist.keys()}が動作しない理由がある

# loop over dictionaries under list. I wanted to use loop FOR ${address} 
# in ${addresslist.keys()} but for some reason its not working so i use 
# this code to display key value pair 

。リストにはキーがありません。

すべてのアドレスを${addresslist}にループする必要があります。そのループ内でキーワードを呼び出して、リスト内の各要素のキー/値のペアを印刷できます。ここで

は完全な作業例です:

*** Settings *** 
Library OperatingSystem 
Library Collections 

*** Keywords *** 
Log dictionary 
    [Description] log key/value pairs from dictionary to the console 
    [Arguments] ${dict} 
    log to console \n---- 
    :FOR ${key} IN @{dict.keys()} 
    \ ${value}= get from dictionary ${dict} ${key} 
    \ log to console ${key} => ${value} 

*** Test Cases *** 
Code1 
    ${json_data}= Get file detail.json 

    ${data}= evaluate json.loads($json_data) json 
    ${alladdress}= get from dictionary ${data} alladdress 
    @{addresslist}= get from dictionary ${alladdress} addresslist 

    :FOR ${address} in @{addresslist} 
    \ log dictionary ${address} 
関連する問題