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.
Antworten
jmurauer
User
Beiträge: 8
Registriert: Mittwoch 22. November 2006, 14:31

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
jmurauer
User
Beiträge: 8
Registriert: Mittwoch 22. November 2006, 14:31

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
Antworten