2017-02-28 2 views
1

I Robot Framework mit einem Befehl auf einem Ordner am Aufruf wie folgt:Zugriff Robot Framework globale Variablen von einem Vorlauf Modifikator

robot --name MyTestSuite --variablefile lib/global_variables.py --variable TARGET_TYPE:FOO --variable IMAGE_TYPE:BAR --prerunmodifier MyCustomModifier.py ./tests 

MyCustomModifier.py enthalten eine einfache SuiteVisitor-Klasse, die/includes schließt Tags und hat ein paar andere Dinge basierend auf einigen der eingestellten Variablenwerte. Wie kann ich auf TARGET_TYPE und IMAGE_TYPE in dieser Klasse zugreifen? Die gezeigte Methode here funktioniert nicht, weil ich Zugriff auf die Variablen haben möchte, bevor die Tests starten, und deshalb bekomme ich eine RobotNotRunningError mit der Nachricht Cannot access execution context.

Nachdem ich this issue report gefunden habe, habe ich versucht, auf Version 2.9.1 herunterzustufen, aber nichts hat sich geändert.

Antwort

1

Keines der öffentlichen APIs scheint diese Informationen zu liefern, aber das Debuggen des Hauptcodes bietet eine alternative Möglichkeit, diese zu erhalten. Es muss gesagt werden, dass dieser Beispielcode mit Version 3.0.2 funktioniert, aber möglicherweise nicht in der Zukunft funktioniert, da dies interne Funktionen sind, die sich ändern können. Dennoch denke ich, dass der Ansatz beibehalten wird.

Da Robot Framework eine Anwendung ist, erhält es die Befehlszeilenargumente über seine Hauptfunktion: run_cli (bei Ausführung über die Befehlszeile). Diese Funktion wird sich mit den Argumenten aus dem System gefüllt und kann überall in jedem Python-Skript über erhältlich:

import sys 

cli_args = sys.argv[1:] 

Robot Framework verfügt über eine Funktion, die die Kommandozeile Argumentliste interpretiert und machen es zu einem besser lesbaren Objekt:

Die Argumentvariable ist eine Liste, in der alle Variablen aus der Befehlszeile hinzugefügt werden. Ein Beispiel:

arguments[0] = IMAGE_TYPE:BAR 

Dies sollte Ihnen den Zugriff auf die Informationen ermöglichen, die Sie benötigen.

Verwandte Themen