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?
Modul in der interaktiven Konsole aufrufen
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.
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?
Wie testet ihr einzelne Module ohne gleich das Ganze zu testen?
@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…
@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.