IDEL + unittest

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
jmurauer
User
Beiträge: 8
Registriert: Mittwoch 22. November 2006, 14:31

IDEL + unittest

Beitragvon jmurauer » Mittwoch 22. November 2006, 14:36

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
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: IDEL + unittest

Beitragvon Leonidas » Mittwoch 22. November 2006, 16:26

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
jmurauer
User
Beiträge: 8
Registriert: Mittwoch 22. November 2006, 14:31

Re: IDEL + unittest

Beitragvon jmurauer » Mittwoch 22. November 2006, 20:24

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
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: IDEL + unittest

Beitragvon Leonidas » Mittwoch 22. November 2006, 21:43

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice

Wer ist online?

Mitglieder in diesem Forum: Mephisto, snafu, Yahoo [Bot]