2010-03-04 15 views
5

Jaki jest python sposób pisania unitest, aby sprawdzić, czy moduł jest prawidłowo zainstalowany? Przez poprawnie zainstalowaną mam na myśli, nie wywołuje on ImportError: Brak modułu o nazwie foo.Jak napisać unittest do importowania modułu w Pythonie

+6

Ogólnie rzecz biorąc, nie ma wiele testów jednostkowych. Czy nie ufasz wyrażeniu 'import'? Linia kodu importu jest tak prosta - i tak łatwa do sprawdzenia - że wydaje się trochę głupia, aby ją przetestować. Dlaczego jednostka testuje wyrażenie 'import'? –

+0

Ponieważ muszę wdrożyć moją aplikację Django na innym serwerze i wymaga ona kilku dodatkowych modułów, chcę się upewnić, że wszystkie wymagane moduły są zainstalowane. Na przykład, upewniając się, że simplejson jest zainstalowany dla Pythona 2.5. Oczywiście ufam komunikatowi importu, po prostu nie chcę zapomnieć o instalacji potrzebnego modułu. – DrDee

+1

Wygląda na to, że przeprowadzasz testy środowiska produkcyjnego, co jest ... dziwne. W każdym razie, testujesz, że masz odpowiednie zależności, co jest zadaniem dla menedżera pakietów. Utwórz pakiety dla twojej aplikacji lub użyj pythonic managerów zależności (pip i pip install -r requirements.txt w virtualenv przychodzi ci na myśl). – Almad

Odpowiedz

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.

To nie jest scenariusz testu jednostkowego.

Jest to proces przygotowania produkcji i nie jest - technicznie - testem twojej aplikacji.

To zapytanie o środowisko. Nasza obejmuje dziesiątki rzeczy.

Zacznij od prostego skryptu, takiego jak ten. Dodaj każdą rzecz, którą potrzebujesz, aby się upewnić, że istnieje.

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

Po prostu uruchom ten skrypt w każdym środowisku w ramach instalacji. To wcale nie jest test jednostkowy. Jest to warunek wstępny instalacji instalacji.

+0

Dziękuję bardzo i przepraszam za używanie niewłaściwej terminologii, to oczywiście postawiło całą masę ludzi na niewłaściwą stopę :) – DrDee

1

nie widzę dlaczego trzeba by to sprawdzić, ale coś takiego:

def my_import_test(self): 
    import my_module 

Jeżeli błąd import jest podniesiona badanie zakończyło się niepowodzeniem, jeśli nie przechodzi.

+0

Może nie jestem jasny w tym, czego potrzebuję. Chcę sprawdzić, czy import modułu zakończył się powodzeniem, czy nie, więc widzę, jakich modułów brakuje i które należy zainstalować. Więc jak mogę użyć self.assertUnequals ... oświadczenie – DrDee

Powiązane problemy