Robotframework for loop weiter mit nächstem Test

Aug 23 2020

Ich habe folgenden Code:

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

Danach führe ich eine Reihe von Schlüsselwörtern für alle Elemente in einer Liste mit einer for-Schleife aus. Jetzt habe ich eine Situation, in der für ein Element in der Liste eine Bewertung fehlgeschlagen ist und ich diesen Test als Fehler markieren muss, aber möchte, dass die Testsuite mit den nächsten Elementen in der Liste fortfährt.

Angenommen, es gibt 3 Elemente in der Liste und der Testfall schlägt für 2 zweite Elemente in der Liste fehl, dann sollte der Code zur Haupt-For-Schleife zurückkehren [nicht mit einem anderen Schlüsselwort für das 2. Element fortfahren] und den Testfall für das 3. Element starten.

Was ich beobachte, dass die Verwendung des Schlüsselworts Fail und anderer die gesamte Testsuite stoppt. Gibt es eine Möglichkeit, dies zu erreichen?

Antworten

1 BenceKaulics Aug 23 2020 at 18:43

Wenn Sie die for-Schleife aus der Testvorlage in den Testfall extrahieren und Vorlagen mit for-Schleifen verwenden , könnten Sie die Iterationen voneinander unabhängig machen.

Zum Beispiel mit folgenden Modifikationen:

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

Das wäre die Ausgabe: