Robotframework para loop continua com o próximo teste

Aug 23 2020

Eu tenho o código abaixo:

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

De acordo com ele, estou executando um conjunto de palavras-chave para todos os itens em uma lista usando o loop for. Agora, tenho uma situação em que, para um item da lista, uma avaliação falhou e tenho que marcar esse teste como falha, mas quero que o conjunto de testes continue com os próximos itens da lista.

Portanto, suponha que haja 3 itens na lista e o caso de teste falhe por 2 segundos no item da lista, então o código deve retornar ao loop for principal [não continuar com outra palavra-chave para o 2º item] e iniciar o caso de teste para o 3º item.

O que eu observo é que usar a palavra-chave Fail e outras interrompe todo o conjunto de testes. Existe uma maneira de conseguir isso?

Respostas

1 BenceKaulics Aug 23 2020 at 18:43

Se você extrair o loop for do modelo de teste para o caso de teste e usar Templates com loops for , poderá tornar as iterações independentes umas das outras.

Por exemplo, com as seguintes modificações:

*** 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 seria a saída: