2013-05-14 13 views
6

Nella guida per l'utente di Robot Framework esiste una sezione che descrive come passare file variabili e anche alcune variabili possibili se necessario.
Esempio:
pybot --variablefile taking_arguments.py:arg1:arg2
Come utilizzare argomenti aggiuntivi passati con file Variable - Struttura robot

la mia domanda è posso utilizzare queste possibili variabili arg1 e arg2 nel file taking_arguments.py successivamente e se posso allora come?

In questo momento ho questo:

pybot --variablefile taking_arguments.py:arg1:arg2

contenuti taking_arguments.py:

IP_PREFIX = arg1

Ma che si traduce in

NameError: name 'arg1' is not defined

risposta

5

L'unico modo per utilizzare le variabili in un file argomento utilizzando la sintassi --variablefile filename.py:arg1:arg2 consiste nell'avere il file delle variabili implementare la funzione get_variables. Questa funzione passerà gli argomenti specificati sulla riga di comando e deve restituire un dizionario di nomi e valori di variabili.

Ad esempio, si consideri il seguente file variabile, denominato "variables.py":

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

Questo file crea due variabili robot, chiamati ${argument 1} e ${argument 2}. I valori di queste variabili saranno i valori degli argomenti che sono stati passati in Si potrebbe utilizzare questo file variabile in questo modo:.

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

In questo caso, le stringhe "uno" e "due" saranno passati al get_variables come i due argomenti. Questi saranno quindi associati alle due variabili, con ${argument 1} impostato su one e ${argument 2} impostato su two.

+0

Ricevuto '' 'TypeError: get_variables() richiede esattamente 2 argomenti (0 dato)' '' quando ho provato l'esempio sopra. Questa è la mia configurazione: un file robot con '' 'open browser''' e questi due argomenti' '' $ {argomento 1} '' 'e' '' $ {argomento 2} '' 'Sto chiamando anche il. file py in '' 'Settings''' la mia esecuzione da riga di comando appare come questo' '' pybot -v variables.py:username:password file.robot '' 'Sto cercando di passare un nome utente e una password a un modulo tramite la riga di comando usando questo metodo, ma senza fortuna. – Freddy

+1

@Freddy Probabilmente hai usato argomenti errati. Dovresti usare in minuscolo '-v' per definire una singola variabile. Per file variabili, usa maiuscole '-V' o' --variablefile' –

+0

@ sjudǝʊ Grazie per questo chiarimento. In effetti, stavo passando la bandiera sbagliata. L'uso di '' '-V''' ha funzionato come previsto. Ho ancora ricevuto il seguente errore '' 'Errore nel file '.../_ robot/file.robot': Elaborazione del file variabile '.../_ robot/variables.py' fallito: TypeError: get_variables() richiede esattamente 2 argomenti (0 dato) '' 'nei log, tuttavia, il processo ha funzionato. Non sono sicuro se l'errore dei log sia solo qualcosa che la RF ha problemi nell'elaborazione. – Freddy

2

Non ho provato a passare i valori iniziali alle variabili in un file di dimensioni ... Quindi io non sono sicuro se questo è qualcosa di possibile ...

posso offrire un'alternativa ...

Puoi definire manualmente alcune variabili con i loro valori al comando pybot ...

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

Se non mi sbaglio queste variabili avviate manualmente hanno una priorità più alta di questi nel file variabile. Quindi, anche se sono avviati nel file delle variabili, i valori passati con l'opzione -v verranno utilizzati nel testcase.

Spero che questo possa aiutarti!

Problemi correlati