2016-04-22 5 views
0

Ich arbeite mit Robot Framework und kann eine Schleife erstellen, die bestimmte Seiten meiner Website überprüft. In dieser Schleife kann ich mehrere Überprüfungen durchführen. Beispiel:Wie kann ich in Robotframework ein Schlüsselwort mit einer for-Schleife erstellen, das Argumente auf seine Iterationen anwendet?

*** Test Cases *** 
Check all cat pages 
    Get all cats 
    :FOR ${cat} IN ${cats} 
/Go to catpage ${cat} 
/Check if page has ${cat} 
/Check if page is fluffy 
/Check if page haz burger 

*** Keywords *** 
Get all cats 
    [some irrelevant magic that gives me all cats] 

Go to catpage 
    [Arguments] ${cat} 
    Go to ${SERVER}/catpages/${cat}.html 

Check if page has 
    [Arguments] ${cat} 
    [do some irrelevant magic with the variable ${cat}] 

Check if page is fluffy 
    [do some irrelevant magic] 

Check if page haz burger 
    [do some irrelevant magic] 

Jetzt will ich das Teil für-Schleife tatsächlich haben, in einem separaten Schlüsselwort, das ich anrufen kann, wonach die Kontrollen zu jeder Iteration der Schleife angewendet werden, wie folgt aus:

*** Test Cases *** 
Check if the cats are fluffy 
    Check all cat pages 
    [Check if page is fluffy] 

Check what the cats have 
    Check all cat pages 
    [Check if page has ${cat}] 
    [Check if page haz burger] 

*** Keywords *** 
Check all cat pages 
    Get all cats 
    :FOR ${cat} IN ${cats} 
/Go to catpage ${cat} 
/[the keywords applied here] 

    [...] 

Also, im zweiten Beispiel würde die for-Schleife zweimal angewendet werden. Zuerst würde es alle Katzenseiten durchlaufen und für jede Katzenseite prüfen, wie flauschig es ist. Bei der zweiten Schleife würde es erneut über alle catpages iterieren und prüfen, ob jede catpage $ {cat} hat, und ob es haz burger ist. Natürlich könnte ich für beide Testfälle eine neue for-Schleife schreiben, aber um die Dinge lesbar zu halten, würde ich lieber ein Schlüsselwort mit der Schleife aufrufen und einige Schlüsselwörter darauf anwenden. Ich wäre dann in der Lage, neue Keywords einfach hinzuzufügen (zum Beispiel, wenn ich ein neues Keyword wie "Check if page has photo" erstelle, kann ich es zum Test "Check what the cats have" hinzufügen, und alle Seiten sind dann überprüft, ob sie ein Foto hat

Wie kann ich eine solche Einrichtung erreichen

+1

Fragen Sie, wie Sie eine Liste von Stichwörtern erstellen (zB: "[überprüfen Sie, ob die Katzen flauschig sind", "überprüfen, was die Katzen haben"]), und dann jedes dieser Schlüsselwörter für jede Seite ausführen können ? –

+0

Hm, vielleicht war es der Freitagnachmittag, aber ich hatte nicht daran gedacht, eine Liste der verschiedenen Schlüsselwörter zu erstellen und diese Liste dann als Variable zu verwenden, um das Schlüsselwort, das die for-Schleife enthält, auf jeder Seite zu verwenden. Lassen Sie mich das versuchen: Wie funktioniert es, wenn ein Schlüsselwort in der Liste eine Variable für sich selbst benötigt, zB ["prüfen, ob die Seite $ {cat}" enthält]? – Monnikje

+0

Sie können festlegen, dass alle benutzerdefinierten Schlüsselwörter alle möglichen Variablen erwarten (verwenden Sie jedoch nur die, die Sie benötigen). In diesem Fall könnten Sie einfach die Liste der Schlüsselwörter iterieren und 'Keyword ausführen $ {kw} $ {cat} $ {cat_size} $ {cat_color}' – jim

Antwort

1

Sorry für die Verspätung.? Wochenende, andere Aufgaben bei der Arbeit und ein nationaler Feiertag war im Weg Danke Brian Oakley und jim.: . Sie setzen mich auf dem richtigen Weg habe ich auch this mich auf die richtige Antwort zu helfen

ich ein paar Schritte verwenden Zunächst erstelle ich ein neues Schlüsselwort für das Schlüsselwort möchte ich nutzen, um:..

*** Keywords *** 
Check if page has 
[Arguments] ${cat} 
[do some irrelevant magic with the variable ${cat}] 

Use check if page has 
${Task1} = convert to string Check if page has 
${Task2} = convert to string ${cat} 
${TasksCombined} = create list ${Task1} ${Task2} 
set suite variable ${CatTask} ${TasksCombined} 

Jetzt kann ich den Satz 'Use check if page hat' verwenden, um eine Liste mit dem Namen dieses Schlüsselwortes und der Variablen zu erhalten.

Nächste erstelle ich zwei Schleifen:

*** Keywords *** 
Loop over all pages 
    [Arguments] ${TasksToPerform} 
    Get all cats 
    :FOR ${kitten} IN ${cats} 
    \ set suite variable ${cat} ${kitten} 
    \ Go to catpage ${cat} 
    \ Loop over tasks ${TasksToPerform} 

Loop over tasks 
    [Arguments] ${TasksToPerform} 
    ${AmountTasks} = get length ${TasksToPerform} 
    :FOR ${index} IN RANGE 0 ${AmountTasks} 
    \ ${Task} = get from list ${TasksToPerform} ${index} 
    \ ${TaskLength} = get length ${Task} 
    \ run keyword if '${TaskLength}' == '1' ${Task[0]} 
    \ ... ELSE IF '${TaskLength}' == '2' ${Task[0]} ${Task[1]} 
    \ ... ELSE IF '${TaskLength}' == '3' ${Task[0]} ${Task[1]} ${Task[2]} 

In der ersten Schleife ich all die verschiedenen Katzen bekommen, gehen Sie zu der entsprechenden catHauptseite und die zweite Schleife laufen. Diese zweite Schleife bestimmt zuerst, wie viele Aufgaben ausgeführt werden müssen. Dann schleift es über alle von ihnen. Es prüft für jede Aufgabe, wie viele Argumente die Aufgabe hat, und führt die Aufgabe (das erste Element des Arrays sollte immer das Schlüsselwort sein) zusammen mit bis zu zwei Schlüsselwörtern aus (Sie könnten mehr machen: Gibt es eine Möglichkeit, dies dynamisch zu machen?). Ow, und indem ich die Variable $ {cat} als eine Suite-Variable setze, kann ich in den Schlüsselwörtern selbst die lokale 'cat'-Variable durch die $ {cat} ersetzen, die in der ersten Schleife generiert wird. Diese Schlüsselwörter erlauben Sie mir, diese Tests zu erstellen:

*** Test Cases *** 
Check if the cats are fluffy 
    Use check if page is fluffy 
    @{TasksToPerform} = create list ${FluffyTask} 
    Loop over tasks ${TasksToPerform} 

Check what the cats have 
    Use check if page has 
    Use check if page haz burger 
    @{TasksToPerform} = create list ${CatTask} ${BurgerTask} 
    Loop over tasks ${TasksToPerform} 

In diesen Tests, die ich alle Tests ersten Listen I für diese Schleife ausgeführt werden soll, Gruppe dann die Listen für die spezifischen Tests zusammen in einer großen Liste und Schleife über Das. Dadurch kann ich den Schleifen eine Anzahl von Tests zuweisen und sie erweitern, wenn ich weitere Tests mache.

Noch einmal vielen Dank für die Hinweise, Jungs!