2017-02-14 10 views
2

Есть ли способ перебрать словарь в РФ? я использовал Pythonic путь, но не смог:Зашифруйте словарь в Robot Framework

:FOR ${key} ${value} IN &{dict} 

выход: Количество значений цикла должно быть кратно переменных. Получено 2 переменных, но 1 значение.

То же, когда я указал словарь как скалярную переменную. Однако я не мог найти пример в документации. Кто-нибудь решил это?

P.S.

Мне известно об обходном решении, которое вы используете kw. Получите словарные ключи и получите значения словаря, затем, чтобы обновить значения, которые вы используете Set To Dictionary $ {key} $ {new_value}, но это кажется недружественным человеком и использует несколько для итераций циклов вместо одного.

ответ

5
Loop Through Dict 
    &{mydict} Create Dictionary a=1 b=2 
    :FOR ${key} IN @{mydict.keys()} 
    \ Log ${mydict["${key}"]} 

Loop Through Dict And Multiplicate Values 
    &{mydict} Create Dictionary a=1 b=2 
    :FOR ${key} IN @{mydict.keys()} 
    \ ${new_value} Evaluate ${mydict["${key}"]}*2 
    \ Set To Dictionary ${mydict} ${key}=${new_value} 
    Log ${mydict} 
+0

это обходной путь я уже говорил. Это не так плохо в вашем примере, но попробуйте, например. умножить значения по числу и обновить ... В python еще один для цикла, вот ... ужасный. Это даже может быть передано команде RF в качестве улучшения. – user2678074

+1

Хм, тогда я не понимаю. Вы можете прокручивать список ключей словаря:: FOR $ {key} IN @ {dict.keys()} 'или через список значений словаря:: FOR $ {value} IN @ {dict.values ​​()}' без какого-либо другого дополнительного ключевого слова. –

+0

А теперь, после того, как вы продлили комментарий, это более понятно. Да, неприятно делать такой цикл в РФ, я бы определенно написал как можно больше KW в python. –

1

Другим обходным путем является использование ключевого слова «Get From Dictionary» во время цикла for.

Loop through and Log key and value in dict 
    [Documentation] Loops through each key and stores the key value 
    ...    in a variable that can be used during the for 
    ...    loop, as if you were iterating through python 
    ...    with "for key, value in dict.iteritems()". 
    &{mydict} Create Dictionary a=1 b=2 
    :FOR ${key} IN @{mydict.keys()} 
    \ ${value}= Get From Dictionary ${mydict} ${key} 
    \ Log ${key}, ${value} 

ссылка: http://robotframework.org/robotframework/latest/libraries/Collections.html#Get%20From%20Dictionary

 Смежные вопросы

  • Нет связанных вопросов^_^