Seite 1 von 1
IDEL + unittest
Verfasst: Mittwoch 22. November 2006, 14:36
von jmurauer
Hallo,
ich verwende IDLE (nicht mehr lange, dann vielleich Eclipse), habe Unittests und damit folgendes Problem.
Wenn ich das Programm vom Editor aus starte (mit F5) laufen die Unittest durch, alle mit OK. Im Anschluß zeigt mir IDLE eine Dialogbox und fragt, ob ich alles beenden will oder nicht. Natürlich möchte ich nicht und muss das Ding immer wegclicken.
Frage: wie verhindert man, dass diese DialogBox erscheint?
Danke,
Johann
Re: IDEL + unittest
Verfasst: Mittwoch 22. November 2006, 16:26
von Leonidas
jmurauer hat geschrieben:Frage: wie verhindert man, dass diese DialogBox erscheint?
unittests nicht in IDLE starten oder die Funktion runTests() aus unittest über Monkey Patching korrigieren, dass sie nicht mit sys.exit() abbricht (wer hat sich eigentlich das ausgedacht?) bzw. den SystemExit abfangen.
Re: IDEL + unittest
Verfasst: Mittwoch 22. November 2006, 20:24
von jmurauer
Leonidas hat geschrieben:jmurauer hat geschrieben:Frage: wie verhindert man, dass diese DialogBox erscheint?
unittests nicht in IDLE starten oder die Funktion runTests() aus unittest über Monkey Patching korrigieren, dass sie nicht mit sys.exit() abbricht (wer hat sich eigentlich das ausgedacht?) bzw. den SystemExit abfangen.
Danke für die Antwort,
a) nicht mit IDLE ... (sondern in einer Shell ?) ok, ist aber dann auch so umständlich wir das wegclicken
b) "Monkey Patching" ... das kenne ich als Python-Anfänger nicht. Ist damit das Überschreiben einer Methode der "Oberklasse" gemeint?
c) "SystemExit abfangen" ... wie macht man das in Python?
Ganz simple Code-Skellete wären nett.
PS: was mir an Python so gefällt: Komplizierte Dinge lassen sich so einfach und übersichtlich machen. Habe gerade was implementiert (aus dem Bereich Mathematik), was in C++ einige tausend Zeilen gewesen wäre, in Python waren es ein paar hundert.
Gruß,
Johann
Re: IDEL + unittest
Verfasst: Mittwoch 22. November 2006, 21:43
von Leonidas
jmurauer hat geschrieben:a) nicht mit IDLE ... (sondern in einer Shell ?) ok, ist aber dann auch so umständlich wir das wegclicken
Naja, alternativ nutzt du gleich ganz anderen Editor - ich persönlich lasse meine Programme generell in der Shell laufen, weil ich keine Lust habe, dass der Editor da rumpfuscht.
jmurauer hat geschrieben:b) "Monkey Patching" ... das kenne ich als Python-Anfänger nicht. Ist damit das Überschreiben einer Methode der "Oberklasse" gemeint?
Bei einer Monkey-Patching-Lösung müsstest du eine Funktion schreiben die so aussieht:
Code: Alles auswählen
def runTests(self):
if self.testRunner is None:
self.testRunner = TextTestRunner(verbosity=self.verbosity)
result = self.testRunner.run(self.test)
Und diese Funktion dann in das Unittest Modul einbauen, dabei das Original
überschreibend:
Code: Alles auswählen
import unittest
unittest.TestProgram.runTests = runTests
jmurauer hat geschrieben:c) "SystemExit abfangen" ... wie macht man das in Python?
Nein, vergiss es - das wird ziemlich hässlich.