Saltar al contenido

Para el diccionario en bucle en Robot Framework

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

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *