2013-05-14 9 views
6

W podręczniku użytkownika programu Robot Framework znajduje się sekcja opisująca przekazywanie plików zmiennych oraz, w razie potrzeby, niektórych zmiennych.
Przykład:
pybot --variablefile taking_arguments.py:arg1:arg2
Sposób korzystania z dodatkowych argumentów przekazywanych za pomocą pliku zmiennych - struktura robota

Moje pytanie brzmi czy mogę użyć tych możliwych zmiennych arg1 i arg2 w pliku taking_arguments.py potem i jeśli mogę to w jaki sposób?

Teraz mam to:

pybot --variablefile taking_arguments.py:arg1:arg2

zawartość taking_arguments.py:

IP_PREFIX = arg1

Ale to skutkuje

NameError: name 'arg1' is not defined

Odpowiedz

5

Jedynym sposobem użycia zmiennych w pliku argumentów przy użyciu składni --variablefile filename.py:arg1:arg2 jest posiadanie pliku zmiennych do zaimplementowania funkcji get_variables. Ta funkcja będzie przekazywać argumenty określone w linii poleceń i musi zwracać słownik nazw zmiennych i wartości.

Na przykład rozważmy następującą zmienną plik o nazwie „variables.py”:

def get_variables(arg1, arg2): 
    variables = {"argument 1": arg1, 
       "argument 2": arg2, 
       } 
    return variables 

Plik ten tworzy dwie zmienne robotów nazwanych ${argument 1} i ${argument 2}. Wartości tych zmiennych będą wartości argumentów, które zostały przekazane w Możesz używać tego pliku zmiennej takiego:.

pybot --variablefile variables.py:one:two ... 

W tym przypadku struny „jeden” i „dwa” zostanie przekazany do get_variables jako dwa argumenty. Zostaną one następnie powiązane z dwiema zmiennymi, co spowoduje ustawienie ${argument 1} na one i ${argument 2} ustawionej na two.

+0

Otrzymane '' 'TypeError: get_variables() przyjmuje dokładnie 2 argumenty (0 podane)' '', gdy próbowałem powyższego przykładu. Oto moja konfiguracja: jeden plik robota z "otwartą przeglądarką" i tymi dwoma argumentami: '$ {argument 1}' '' i '' $ {argument 2} '' Dzwonię też. Plik py w "' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'robot '' 'Próbuję przekazać nazwę użytkownika i hasło do formularza za pomocą wiersza poleceń przy użyciu tej metody, ale bez powodzenia. – Freddy

+1

@Freddy Prawdopodobnie użyłeś niewłaściwego argumentu. Powinieneś używać małych liter '-v', aby zdefiniować pojedynczą zmienną. W przypadku plików zmiennych użyj wielkich liter '-V' lub' --variablefile' –

+0

@ sjudǝʊ Dziękujemy za wyjaśnienie. W rzeczywistości przekazałem niewłaściwą flagę. Użycie '' '-V''' działało zgodnie z oczekiwaniami. Nadal otrzymuję następujący błąd "' 'Błąd w pliku '.../_ robot/file.robot': Przetwarzanie pliku zmiennych" .../_ robot/variables.py "nie powiodło się: TypeError: get_variables() ma dokładnie 2 argumenty (0 dany) '' 'w dziennikach, jednak proces zadziałał. Nie jestem pewien, czy błąd z logów jest po prostu czymś, co RF ma problemy z przetwarzaniem. – Freddy

2

nie próbowałem przekazać początkowe wartości zmiennych w pliku zmiennej ... Więc nie jestem pewien, czy to jest coś możliwe ...

mogę zaoferować alternatywę ...

Można zdefiniować ręcznie zmienne z ich wartościami w komendzie pybot ...

pybot -variablefile taking_arguments.py -v IP_PREFIX:arg1 -v Varibale:Value 

Gdybym nie mylę te ręcznie zainicjowane zmienne mają wyższy priorytet niż te w pliku zmiennej. Więc nawet jeśli są one inicjowane w pliku zmiennych, wartości przekazane za pomocą opcji -v będą używane w testście.

Mam nadzieję, że to pomoże!

Powiązane problemy