Wie kann ich meine Stack-Frames in einer TestCase-Unterklasse verbergen?

8

Ich möchte eine benutzerdefinierte assert-Methode zu einer TestCase -Unterklasse hinzufügen. Ich habe versucht, meine Implementierung aus dem Modul unittest zu kopieren, so dass sie so nah wie möglich dem Verhalten der regulären TestCase entspricht. (Ich würde es vorziehen, nur an self.assertEqual() zu delegieren, aber das verursacht noch mehr Backtrace-Rauschen, siehe unten.) Das unittest -Modul scheint einige interne Details seiner Implementierung beim Berichten fehlgeschlagener Assertionen automatisch zu verbergen.

%Vor%

Die Ausgabe von diesem ist so:

%Vor%

Beachten Sie, dass die benutzerdefinierte Assertion-Methode einen Stack-Trace mit zwei Frames verursacht, einen innerhalb der Methode selbst, während die Methode stock unittest nur einen Frame hat, die relevante Zeile im Code des Benutzers. Wie kann ich dieses Bildversteckverhalten auf meine eigene Methode anwenden?

    
amoe 25.09.2012, 12:31
quelle

1 Antwort

14

Diese Frage wurde von Peter Otten auf comp.lang.python beantwortet .

Verschieben Sie MyTestCase in ein separates Modul und definieren Sie eine globale Variable __unittest = True .

%Vor%     
amoe 25.10.2012, 13:17
quelle