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()
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()
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 ;-).
To było moje podejrzenie, dziękuję. – Gattster
To jest rzeczywiście stary otwarty problem Python:
Jest łatka kandydata (od 2007 roku), który sprawia, że doctest znaleźć funkcje zagnieżdżone, ale ktoś chyba musi pchnąć to.
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. –