Saltar al contenido

¿Es posible tener una variable que abarque varias líneas en Robot Framework?

Te doy la bienvenida a nuestro espacio, ahora hallarás la solucíon de lo que necesitas.

Solución:

En una tabla de variables

Si está creando las cadenas en un *** Variables *** tabla, puede distribuir la definición en varias líneas. Puedes usar un argumento especial SEPARATOR para definir cómo se unen las celdas. De forma predeterminada, las líneas están unidas por un espacio, por lo que querrá configurarlo en el vacío string al no dar explícitamente SEPARATOR un valor.

Consulte la tabla de variables en la guía del usuario para obtener más información.

*** Variables ***
$example_regex=  SEPARATOR=
...  (?m)Setting IP address to [0-9]1,3\.[0-9]1,3\.[0-9]1,3\.[0-9]1,3\n
...  Setting MAC address to [0-9a-f]2:[0-9a-f]2:[0-9a-f]2:[0-9a-f]2:[0-9a-f]2:[0-9a-f]2\n
...  Setting IP forwarding kernel options

En un caso de prueba o palabra clave

Si está tratando de hacer esto en un caso de prueba o palabra clave, no puede definir directamente una multilínea string. Sin embargo, puede obtener el mismo efecto utilizando la palabra clave catate en un caso de prueba o palabra clave para unir datos que se distribuyen en varias celdas. Asegúrese de escapar correctamente de sus barras diagonales inversas y establezca el carácter separador en un vacío string si no desea saltos de línea en los datos.

*** Test Cases ***
Multiline variable example
  $example_regex=  catenate  SEPARATOR=
  ...  (?m)Setting IP address to [0-9]1,3\.[0-9]1,3\.[0-9]1,3\.[0-9]1,3\n
  ...  Setting MAC address to [0-9a-f]2:[0-9a-f]2:[0-9a-f]2:[0-9a-f]2:[0-9a-f]2:[0-9a-f]2\n
  ...  Setting IP forwarding kernel options
  log  regex: '$example_regex'

Robot Framework 2.9 agregó soporte para cadenas literales multilínea según los documentos.

test.robot

*** Variables ***
$example_regex =  SEPARATOR=
...  (?m)Setting IP address to [0-9]1,3\.[0-9]1,3\.[0-9]1,3\.[0-9]1,3\n
...  Setting MAC address to [0-9a-f]2:[0-9a-f]2:[0-9a-f]2:[0-9a-f]2:[0-9a-f]2:[0-9a-f]2\n
...  Setting IP forwarding kernel options

*** Test Cases ***
Show output
    Log  n$example_regex  console=yes

robot test.robot

==============================================================================
Test
==============================================================================
Show output
(?m)Setting IP address to [0-9]1,3.[0-9]1,3.[0-9]1,3.[0-9]1,3nSetting MAC address to [0-9a-f]2:[0-9a-f]2:[0-9a-f]2:[0-9a-f]2:[0-9a-f]2:[0-9a-f]2nSetting IP forwarding kernel options
Show output                                                           | PASS |
------------------------------------------------------------------------------
Test                                                                  | PASS |
1 critical test, 1 passed, 0 failed
1 test total, 1 passed, 0 failed
==============================================================================

Algunas notas:

  • Todos los espacios en blanco iniciales y finales se recortan de cada línea
  • Una llanura SEPARATOR= en la primera línea no especifica ningún separador

También puede considerar el uso de archivos variables, ya que obtiene todo el poder del formato literal de Python, lo que puede facilitar el mantenimiento de cosas como expresiones regulares complicadas. Si está utilizando Robot Framework 3+ y Python 3.5+ (para f-strings) entonces puede verse así:

vars.py

ip_address_pattern = r'[0-9]1,3.[0-9]1,3.[0-9]1,3.[0-9]1,3'
lower_mac_address_pattern = '[0-9a-f]2:[0-9a-f]2:[0-9a-f]2:[0-9a-f]2:[0-9a-f]2:[0-9a-f]2'
example_regex = (
  rf'(?m)Setting IP address to ip_address_patternn'
  rf'Setting MAC address to lower_mac_address_patternn'
    'Setting IP forwarding kernel options'
)

test.robot

*** Settings ***
Variables  vars.py

*** Test Cases ***
Show output
    Log  n$example_regex  console=yes

Lo que da como resultado el mismo resultado que el anterior.

Eres capaz de añadir valor a nuestra información asistiendo con tu experiencia en las explicaciones.

¡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 *