Seite 1 von 1

Modul in der interaktiven Konsole aufrufen

Verfasst: Donnerstag 2. August 2012, 13:59
von Higgs
Hallo,

Ein Modul kann ich ja von der Shell aus mit python3 <name>.py aufrufen und mein Testcode in dem Block if __name__ == '__main__': wird ausgeführt. Wie mache ich das in der interaktiven Konsole von Eclipse/PyDev? Der Pythonpath hat den Rootpfad meines Projektes drin, aber ich schaffe es nicht das Modul mytest.py in dem Paket app.sys aufzurufen, per import kein Problem, aber dies ist ja nicht gleich zu setzen mit einem Aufruf von außen.

Kann mir da jemand auf die Sprünge helfen?

Re: Modul in der interaktiven Konsole aufrufen

Verfasst: Donnerstag 2. August 2012, 17:39
von derdon
Naja, nach dem if __name__ == '__main__': sollte eigentlich nicht viel kommen, üblicherweise nur der Aufruf der main-Funktion, also main(). Du kannst also main importieren und aufrufen. Hast du hinter der __main__-Bedingung allerdings 50 Zeilen Code, die du testen willst, machst du dir dein Leben unnötig schwerer als du musst.

Re: Modul in der interaktiven Konsole aufrufen

Verfasst: Donnerstag 2. August 2012, 19:08
von Higgs
Da diese Abfrage nur positiv ist wenn das Modul einzeln aufgerufen wird, wollte ich dies nutzen um jedes einzelne Modul mit einem kurzen Code zu testen, ohne gleich einen Unit-Test zu entwickeln.

Wie testet ihr einzelne Module ohne gleich das Ganze zu testen?

Re: Modul in der interaktiven Konsole aufrufen

Verfasst: Donnerstag 2. August 2012, 19:34
von lunar
@Higgs: Mit Unit-Tests eben… es nimmt sich doch vom Aufwand her nichts, ob Du den Code zum Testen in das Modul, oder gleich in einen richtigen Unittest schreibst. Ich kann mich nicht erinnern, jemals Testcode innerhalb eines Moduls geschrieben zu haben…

Re: Modul in der interaktiven Konsole aufrufen

Verfasst: Donnerstag 2. August 2012, 20:06
von BlackJack
@Higgs: Unit-Tests können in Python sehr leichtgewichtig sein. Schau Dir mal `py.test` oder `nose` an. Die suchen einfach in allen Modulen nach Namen die einem bestimmten Muster entsprechen und führen die aus. Im einfachsten Fall Funktionen deren Namen mit `test_` anfangen. Nicht bestandene Tests müssen einen `AssertionError` auslösen. Das war's schon.

Re: Modul in der interaktiven Konsole aufrufen

Verfasst: Donnerstag 2. August 2012, 20:16
von Higgs
Ok, danke für die Tipps. Ich werde mich dann mal in Unittest einlesen und habe da sicher noch die ein oder andere Frage.