2010-01-26 14 views
8

Czy jest jakiś sposób napisania unittests lub doctests dla innerfunc?Czy mogę przetestować funkcję wewnętrzną w pythonie?

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

Zwykle tego nie robisz: API jest funkcją otaczającą, a funkcje wewnętrzne są analogiczne do nazwanych bloków kodu w funkcji. Nie testujesz ich bezpośrednio, tak jak nie testujesz pojedynczej pętli wewnątrz funkcji; testujesz wejścia do funkcji wykonującej blok kodu. –

Odpowiedz

7

Tylko jeśli udostępnisz sposób wyodrębniania samego obiektu funkcji wewnętrznej, np.

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

Jeśli zewnętrzna funkcja podkreśla ukrywa wewnętrzną jedną całkowicie wewnątrz siebie (nigdy nie pozwalając mu przenikać na zewnątrz, gdy prawidłowo cajoled to zrobić), Twoja jednostka-testy są bezsilni, aby pokonać tę silną stawkę dla ekstremalnych i całkowitej prywatności ;-).

+1

To było moje podejrzenie, dziękuję. – Gattster

Powiązane problemy