2010-03-04 9 views
5

Qual è il modo pietonico di scrivere un unittest per vedere se un modulo è installato correttamente? Se installato correttamente intendo, non solleva un ImportError: nessun modulo chiamato foo.Come scrivere un unittest per l'importazione di un modulo in Python

+6

Generalmente, non c'è molto da testare. Non ti fidi dell'istruzione 'import'? La linea di codice di importazione è così semplice - e così facile da ispezionare - che sembra un po 'sciocco provarlo. Perché collaudi l'istruzione 'import'? –

+0

Come devo distribuire la mia applicazione Django su un server diverso e richiede alcuni moduli aggiuntivi Voglio assicurarmi che tutti i moduli richiesti siano installati. Ad esempio, assicurandosi che simplejson sia installato per python 2.5. Naturalmente mi fido della dichiarazione di importazione, ma non voglio dimenticare di installare un modulo di cui ho bisogno. – DrDee

+1

Sembra che tu stia facendo test sull'ambiente di produzione, che è ... strano. Ad ogni modo, stai verificando di avere delle dipendenze adeguate, che è un lavoro per il gestore di pacchetti. O creare pacchetti per la propria applicazione, o usare pythonic dependency managers (viene in mente la pip e la pip install -r requirements.txt in virtualenv). – Almad

risposta

5

As I have to deploy my Django application on a different server and it requires some extra modules I want to make sure that all required modules are installed.

Questo non è uno scenario di prova unitario.

Questo è un processo di preparazione della produzione e non è - tecnicamente - un test della vostra applicazione.

È una domanda sull'ambiente. La nostra include dozzine di cose.

Inizia con un semplice script come questo. Aggiungi ogni cosa di cui hai bisogno per essere sicuro che esista.

try: 
    import simplejson 
except ImportError: 
    print "***FAILURE: simplejson missing***" 
    sys.exit(2) 
sys.exit(0) 

Basta eseguire questo script in ogni ambiente come parte dell'installazione. Non è affatto un test unitario. È una condizione preliminare per l'installazione di installazione.

+0

Grazie mille, e mi dispiace per aver usato la terminologia sbagliata, ovviamente ha messo un sacco di persone sul piede sbagliato :) – DrDee

1

non vedo il motivo per cui si avrebbe bisogno di provare questo, ma qualcosa di simile:

def my_import_test(self): 
    import my_module 

Se un errore di importazione viene sollevato il test è fallito, se non passa.

+0

Forse non sono chiaro in cosa ho bisogno. Voglio verificare se l'importazione di un modulo ha successo o meno, così posso vedere quali moduli mancano e devono essere installati. Quindi, come posso usare un self.assertUnequals ... statement – DrDee

Problemi correlati