2016-07-13 22 views
2

Ich versuche, eine FOR-Schleife auf Roboter-Framework je nach dem Status einer anderen Variablen auszuführen.Inkrementieren von RobotFramework

${STATUS1}= Run Keyword And Return Status Should Be Equal As Strings ${CELLVALUE} ${EXPECTEDVALUE} 
    \ ${COUNT}= Set Variable If '${STATUS1}' == 'True' ${COUNT}+1 
    \ ... '${STATUS1}' == 'False' ${COUNT}+0 

Aber alles, was ich bekommen ist '''0'+0'+0'+1 oder ähnlich, auch wenn ich Run Stichwort If und Evaluate statt set var, habe ich versucht, integer zu konvertieren, aber nichts passiert und ich kann es nicht konvertieren oder Zahl in Ganzzahl. Irgendwelche Vorschläge? Danke im Voraus!

Antwort

5

Es sieht so aus, als ob Sie einfach nur ${COUNT} inkrementieren möchten, wenn ${CELLVALUE} gleich ${EXPECTEDVALUE} ist. Das kann ziemlich leicht mit Set Variable if

getan werden, wenn Sie wissen, dass ${CELLVALUE} und ${EXPECTEDVALUE} sind von der gleichen internen Typ (zB Strings oder Ints), und Sie verwenden Roboter Framework 2.9 oder höher, können Sie es wie folgt schreiben können :

${COUNT}= Set variable if $CELLVALUE == $EXPECTEDVALUE 
... ${COUNT+1} ${COUNT} 

Dies setzt voraus, dass ${COUNT} auf einen ganzzahligen Wert initialisiert wird, mit dem Sie den Wert tun können ${0} durch die Zuordnung

Wenn Sie den Typ nicht kennen, können Sie den Typ nicht garantieren, oder Verwenden Sie eine ältere Version des Roboters, die Sie verwenden können

${COUNT}= Set variable if '''${CELLVALUE}''' == '''${EXPECTEDVALUE}'''  
... ${COUNT+1} ${COUNT} 

Natürlich könnten Sie Run Keyword verwenden und Status zurück, wie in Ihrem Beispiel, und dann den Status vergleichen: triple-Strings in Anführungszeichen um die Werte in Strings zu zwingen. Das scheint ein unnötiger zusätzlicher Schritt zu sein, aber es könnte in Ihrem eigentlichen Test sinnvoll sein.

Der Punkt ist, können Sie Set variable if und extended variable syntax verwenden, um dieses Problem zu lösen.



Anmerkung 1: Mit Set variable if werden zwei Werte zur Verfügung gestellt. Der erste Wert wird zugewiesen, wenn der Ausdruck wahr ist, der zweite Wert wird zugewiesen, wenn der Wert falsch ist. Der zweite Wert ist die ursprüngliche Variable, was bedeutet, dass sie nicht geändert wird. Wenn Sie den zweiten Wert nicht angeben, wird die Variable auf None festgelegt.

Anmerkung 2: Setzen Sie einen Ausdruck in geschweiften Klammern (zB: ${COUNT+1} wird in der Regel 4 von extended variable syntax dokumentiert

Anmerkung 3:. Beginnend mit Roboter Rahmen 2.9, sind Variablen in der Auswertung Namensraum mit der vereinfachten Syntax verfügbar $varname . so ist der Roboter Variable ${CELLVALUE} kann in python Ausdrücke wie $CELLVALUE verwendet werden Diese im Abschnitt dokumentiert Evaluating Expressions in der BuiltIn Bibliothek Dokumentation

+1

Anmerkung 4:.. $ {COUNT} muss in einen int-Typ initialisiert werden, zB $ {COUNT} = Setzen Sie die Variable $ {0} oder Sie erhalten einen Fehler bei der Variablenauflösung – ombre42

+1

@ ombre42: guter Punkt. Ich habe die Antwort aktualisiert. Vielen Dank! –