Robotframework for loop continúa con la siguiente prueba

Aug 23 2020

Tengo el siguiente código:

*** Settings ***
Library     OperatingSystem
Library     Process
Library     String
Test Template    My Run Test
*** Variables ***
@{MyList}=   item  items

*** Test Cases *** 
#name                        type                   profile          file                 test
[XXXXX_1]                   General                test.out         Profile             mode.out 
          [Tags]    TEST-XXXXX   


*** Keywords *** 
My Run Test
    [Documentation]    Run the suite
    [Arguments]       ${type}     ${profile}     ${file}    ${test}
    : FOR  ${data}  IN   @{MyList}
    \         When data is ready
    \         And tool is ran
    \         And get was success 
    \         And test suite config is updated 
    \         And testing tool is again run 
    \         Then publish test status    

data is ready
     Log to Console     "Data is ready"
tool is ran
     Log to Console     "tool is ran"
     Run Keyword And Return    Stop Test          "This is fun"
get was success 
     Log to Console     "get was success"
test suite config is updated 
     Log to Console     "test suite config is updated"
testing tool is again run 
     Log to Console     "testing tool is again run"
publish test status 
     Log to Console     "publish test status"

Stop Test     
    [Arguments]       ${msg}     
    Log To Console    ${msg}
    Fail              ${msg}

Según esto, estoy ejecutando un conjunto de palabras clave para todos los elementos en una lista usando for loop. Ahora tengo una situación en la que falló una evaluación de un elemento de la lista y debo marcar esa prueba como fallida, pero quiero que el conjunto de pruebas continúe con los siguientes elementos de la lista.

Por lo tanto, suponga que hay 3 elementos en la lista y el caso de prueba falla para 2 segundos elementos en la lista, luego el código debe volver al ciclo for principal [no continuar con otra palabra clave para el segundo elemento] y comenzar el caso de prueba para el tercer elemento.

Lo que observo es que el uso de la palabra clave Fail y otros detiene todo el conjunto de pruebas. ¿Hay una manera de lograr esto?

Respuestas

1 BenceKaulics Aug 23 2020 at 18:43

Si extrae el bucle for de la plantilla de prueba en el caso de prueba y usa Plantillas con bucles for , puede hacer que las iteraciones sean independientes entre sí.

Por ejemplo con las siguientes modificaciones:

*** Test Cases *** 
[XXXXX_1]
    FOR  ${data}  IN   @{MyList}
    #   list item  type       profile     file       test
        ${data}    General    test.out    Profile    mode.out
    END


*** Keywords *** 
My Run Test
    [Documentation]    Run the suite
    [Arguments]       ${data}    ${type}     ${profile}     ${file}    ${test}
    When data is ready
    And tool is ran
    And get was success 
    And test suite config is updated 
    And testing tool is again run 
    Then publish test status

Esta sería la salida: