es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Por qué no hay una definición de alerta sobre el valor ${index} en el For IN express de Robotframework.

Define una lista que contenga varios nombres para verificar. Si se encuentra la cadena ‘lvbu’, salta fuera del cuerpo del BUCLE. Pero la expresión no parece ser adecuada para el robotframwork. ¿Podrías decirme por qué se está señalando que el nombre ‘liubei’ no está definido en la variable ${index}?
Código:

Exit For Loop
@{items}    Create List    liubei    zhangfei    guanyu    lvbu    zhaoyun    machao
FOR    ${index}    IN    @{items}
    Run Keyword If    ${index}==lvbu    Exit For Loop
END

Información de traza:

20211224 23:34:12.775 : TRACE : Argumentos: [ ‘liubei’ | ‘zhangfei’ | ‘guanyu’ | ‘lvbu’ | ‘zhaoyun’ | ‘machao’ ]

20211224 23:34:12.775 : TRACE : Retorno: [‘liubei’, ‘zhangfei’, ‘guanyu’, ‘lvbu’, ‘zhaoyun’, ‘machao’]

20211224 23:34:12.776 : INFO : @{items} = [ liubei | zhangfei | guanyu | lvbu | zhaoyun | machao ]

20211224 23:34:12.779 : TRACE : Argumentos: [ ‘liubei==lvbu’ | ‘Exit For Loop’ ]

20211224 23:34:12.785 : FAIL : Evaluando la expresión ‘liubei==lvbu’ falló: NameError: el nombre ‘liubei’ no está definido ni es importable como módulo

Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema con el código es que, al utilizar la variable ${index} en la condición del statement Run Keyword If, solo evalúa el valor de la variable y no el nombre de la variable en sí. Por lo tanto, está tratando de evaluar la expresión ‘liubei==lvbu’, lo cual no tiene sentido.

    Para solucionar este problema, puedes utilizar la palabra clave List should not contain value de la librería BuiltIn en Robot Framework. Aquí tienes un fragmento de código actualizado:

    @{items}    Create List    liubei    zhangfei    guanyu    lvbu    zhaoyun    machao
    List Should Not Contain Value    ${items}    lvbu
    

    Este código verificará si el valor ‘lvbu’ está presente en la lista @{items} y, si lo está, saldrá del bucle. La palabra clave List should not contain value incluye un mensaje de error significativo, por lo que podrás identificar fácilmente el problema si la prueba falla.

Comments are closed.