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
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:
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.