2017-03-17 2 views
1

Für einen Test habe ich 2 Schlüsselwörter. Die allgemeine Idee ist, eine Reihe von Objekten einzuchecken, wenn ein bestimmtes Feld, Feldname und Nachricht vorhanden ist. Wenn das Feld oder der Feldname nicht vorhanden ist, muss das Schlüsselwort zu Forloop zurückkehren. Das Schlüsselwort muss ${index} und ${result} zurückgeben. Wenn ich diesen Test laufen und es nicht die Variable $ {Ergebnisse} als ${result}=None gezeigt und wenn der Test bestanden wird es ${result}= [3, u'PASS']Roboterrahmen Rückgabewert von Schlüsselwort in for-Schleife wird nicht übergeben

Ich denke, das hat etwas mit den ${result}= im forloop

ich Run keyword and return versucht zu tun aber es hat nicht funktioniert, ich bin ein wenig verwirrt, wo die ${variables} und wo es zu verwenden. Kann mir jemand helfen, das herauszufinden?

forloop:

${index}= | set variable | 0 
${result}= | Set Variable | not started 
: FOR | ${value} | IN RANGE | ${index} | 15 
     \ ${resultaat}= |"other keyword" | ${index} 
     \ ${index}= | "keyword add 1 to index" | ${index} 
     \ Return From Keyword if | '${result}'=='PASS' 
${testsuccess}= | Set Variable If | '${result}'=='PASS' | TEST GESLAAGD 

das 'andere Schlüsselwort' ist:

[ARGS] ${index} 
${index}= | set variable | ${index} 
${check1}= <IS FIELD THERE> 
${result}= | set variable if | ${check1}==False | FIELD NOT THERE 
return from keyword if | ${check1}=False 
${check2}= <HAS FIELD VALUE X> 
${result}= | set variable if | ${check2}==False | WRONG VALUE 
return from keyword if | ${check2}=False 
${check3}= <IS MESSAGE X> 
${result}= | set variable if | ${check3}==False | FAIL 
${result}= | set variable if | ${check3}==True | PASS 
[RETURN] ${index} ${result} 

LOG: keyword = '${result}'=='PASS' FOR = '${testsucces}=None' (Aber das ist nicht richtig, weil die Bedingung erfüllt ist)

Antwort

1

Set Variable If setzt den Wert auf None sobald es kein 'Else' gibt Option und die Bedingung ist nicht erfüllt. Siehe doc: http://robotframework.org/robotframework/latest/libraries/BuiltIn.html#Set%20Variable%20If

So Ihren Code anpassen:

${result} | Set Variable If | ${check3}==False | FAIL 
... | ${check3}==True | PASS 

wie in Dokumentation Beispielen gezeigt.

+0

Thx, für Ihre anwser, aber ich diesen Test bin die Schaffung und ich den guten Pfad. Also das Ergebnis ist immer erfüllt und daher nicht die Lösung für mein Problem. Ich werde dies meiner Frage hinzufügen. Aber wenn ich den Test ausführe, wird die Variable '$ {result}' == 'PASS' im Schlüsselwort gesetzt, aber im FORLOOP ist es None, also wird der Wert vom Schlüsselwort nicht an FORLOOP weitergegeben – Shizzleliz

0

funktioniert es, wenn ich ${result} nach dem

zum Beispiel return from keyword if setzen:

return from keyword if | ${check1}=False | ${result} 
Verwandte Themen