2010-01-26 4 views
8

Gibt es eine Möglichkeit, unittests oder doctests für innerfunc zu schreiben?Kann ich eine innere Funktion in Python Unit testen?

def outerfunc(): 
    def innerfunc(): 
     do_something() 
    return innerfunc() 
+1

Normalerweise tun Sie dies nicht: Die API ist die umschließende Funktion und innere Funktionen sind analog zu benannten Code-Blöcken in der Funktion. Sie testen sie nicht direkt, genauso wenig wie Sie eine einzelne Schleife innerhalb einer Funktion direkt testen. Sie testen die Eingaben für die Funktion, die den Codeblock ausübt. –

Antwort

7

Nur wenn Sie eine Möglichkeit bereitstellen, das innere Funktionsobjekt selbst zu extrahieren, z.

def outerfunc(calltheinner=True): 
    def innerfunc(): 
     do_something() 
    if calltheinner: 
     return innerfunc() 
    else: 
     return innerfunc 

Wenn Ihre äußere Funktion auf Ausblenden der innere ganz in sich selbst besteht (nie lässt sie außen sickern, wenn sie richtig, so zu tun schmeichelte), Ihre Komponententests sind machtlos, diese starke Gebot für extreme und absolute Privatsphäre zu besiegen ;-).

+1

Das war mein Verdacht, danke. – Gattster

Verwandte Themen