Verspotten der Superklasse ruft python auf

8

Ich mache ein paar Unit-Tests und irgendwann muss ich einen super Aufruf verspotten, um einen Fehler zu werfen, zum Beispiel:

%Vor%

Ich benutze die Spinner Bibliothek, um meine Objekte im Allgemeinen zu verspotten, aber ich habe keine Möglichkeit gefunden, das zu verspotten .

    
Hassek 26.10.2012, 19:53
quelle

4 Antworten

4

Ich habe einen Weg gefunden, eine Art Hacky, aber es funktioniert, ich werde es mit meinem Beispiel erklären, das basiert auf diese Antwort, also danke @kindall:

%Vor%

Im Wesentlichen überprüfe ich, ob der Aufruf super von der Klasse stammt, die ich vortäuschen möchte, oder mache einfach eine normale super .

Hoffe das hilft jemandem :)

    
Hassek 26.10.2012, 20:37
quelle
19

Mit der Scheinbibliothek würde ich so etwas machen.

In Ihrer Klassendefinition:

%Vor%

In dem Modul, in dem Sie MyClass aufrufen:

%Vor%     
antonagestam 14.03.2014 17:10
quelle
0

Nun, dann musst du die my_function -Methode der Oberklasse von MyClass vortäuschen, um zu explodieren.

    
Markus Unterwaditzer 26.10.2012 20:11
quelle
0

@Markus sucht am richtigen Ort. Solange Sie Unit-Tests durchführen (d. H. Es gibt nur einen Aufruf an super ), können Sie __builtin__.super wie in:

vortäuschen %Vor%     
claytond 29.03.2018 20:32
quelle

Tags und Links