Gewusst wie: übergeben von Argumenten durch Verweis auf robot framework keywords?
Ich habe ein Schlüsselwort in robot framework; es nimmt ein argument, führt einen Prozess auf und gibt es nach all:
My Keyword Name
[Arguments] ${arg}
# Some process on ${arg}
[Return] ${arg}
Es wäre also die Verwendung:
${x} = My Keyword Name ${x}
Was impliziert, dass ich gab den alten Wert von ${x}
zu dem Schlüsselwort und kehrte er mir den neuen Wert.
Ich möchte einen call-by-reference auf My Keyword Name
, so dass ich nicht brauchen, um eine Zuweisung für die Einstellung der neue Wert für ${x}
. Ich habe gelesen das BuiltIn und Einsteiger-Kapitel,
aber es war keine Zeile über dieses Thema. Kann mir jemand helfen diesbezüglich?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn
${x}
ist eine veränderliche Art wie eine Liste oder ein dictionary, können Sie übergeben das Objekt selbst. Wenn es stellt einen skalaren Wert wie ein string oder int können Sie nicht tun, was Sie wollen. Ihre einzige Wahl ist, zu der neue Wert wird zurückgegeben und neu zuordnen, um die ursprüngliche variable.Es tatsächlich kommt, um mutable/immutable Variablen in python, und wie sind Sie an Funktionen übergeben werden.
Details hier in dieser Antwort, aber in RF-Kontext, auf die es hinausläuft - Sie können ändern, in Listen und Wörterbüchern, und nicht strings und zahlen (int, float). Beispiel:
Den Ausgang, wenn ran wäre:
z.B. die definierte variable in dem Fall geändert wurde, durch ein Schlüsselwort. Das gleiche kann getan werden, mit Wörterbüchern.
Wenn Sie zum zuweisen der variable in der Funktion wird es aber nicht ändern; z.B. mit einem keyword wie diese:
die ursprüngliche variable
${var}
wird nicht geändert werden.Warum ist das so? In kurzen, in python sind Variablen einfach nur Bezeichner ("Namen"), um Speicher-Adressen; wenn Sie zuweisen
${lst}
zu einer neuen Liste, die die variable verweist nun auf eine neue Adresse im Speicher und die weiteren Wechselwirkungen sich nicht ändern, das original.Es wird funktionieren, wenn Sie Sie initialisieren Sie die variable als
Oder
Können Sie erkunden, ob Sie Gebrauch machen können, Set Global Variable oder Test Variable?
Ich verbrachte einige Zeit bevor ich die Lösung!
Der Punkt ist in der Magie "\" char 🙂
Welp ich lief in das gleiche Problem, als ich mit einem Keyword If-Anweisung in einer For-Schleife. Zu wissen, dass wenn ich ein Schlüsselwort und einen Wert zurückgibt, robot framework freaks.
So, ich dachte nur, dies als eine mögliche Lösung. Es werde verwenden meine Beispiel. Es hat Redundanz, aber das ist, weil Sie müssen nur in diesem Fall.
Verwendung:
Ich bin mir jetzt nicht sagen das ist die beste Lösung, aber wenn Sie, laufen Sie in das Szenario, das Sie haben, um die Rückgabe eines Wertes an eine variable mit einem Schlüsselwort, und Sie sind in ein "Keyword Wenn", dies sollte Ihnen ermöglichen, dieses Problem zu umgehen. Ich weiß nicht wirklich, wie es, dass viel, aber es bekommt den job getan.