Solución:
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}
Para iterar sobre las claves de un diccionario, no tiene que usar ningún método de Python en absoluto, pero insiste en usar el Robotframework @
modificador para la expansión de la lista. Por ejemplo:
${mydict} Create Dictionary a=1 b=2
:FOR ${key} IN @{mydict}
Log The current key is: ${key}
# there are at least to ways to get the value for that key
# "Extended variable syntax", e.g. direct access:
Log The value is: ${mydict['${key}']}
# or using a keyword from the Collections library:
${value}= Get From Dictionary ${mydict} ${key}
Log The value through Collections is: ${value}
El bucle sobre las teclas funciona de inmediato, porque en Python un list()
El elenco de un diccionario es en realidad la lista de sus claves. Código de muestra:
mydict = {'a': 1, 'b': 2}
print(list(mydict))
# the output is
# ['a', 'b']
Hay un método dict de Python items()
que itera sobre el diccionario y devuelve una tupla de clave, valor. Lamentablemente, no existe un sustituto directo en los bucles for de Robot Framework, sin embargo, esto se puede hacer con el Get Dictionary Items
palabra clave. Devuelve una lista unidimensional, en la forma
['key1', value_of_key1, 'key2', value_of_key2,]
Combinando eso con el @
expansión de la lista, puede obtener tanto la clave como el valor en cada ciclo:
${mydict} Create Dictionary a=1 b=2
${items} Get Dictionary Items ${mydict}
:FOR ${key} ${value} IN @{items}
Log The current key is: ${key}
Log The value is: ${value}
Otra solución es utilizar la palabra clave “Obtener del diccionario” durante el ciclo 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}
referencia: http://robotframework.org/robotframework/latest/libraries/Collections.html#Get%20From%20Dictionary