2010-01-26 19 views
8

innerfunc için unittests veya doctests yazmanın herhangi bir yolu var mı?Python'da bir iç işlevi test edebilir miyim?

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

Normalde bunu yapmazsınız: API, kapatma işlevidir ve iç işlevler, işlevdeki kodun adlandırılmış kodlarına benzer. Doğrudan bir işlevi test etmediğiniz gibi, doğrudan bir işlevi test etmiyorsunuz; girişleri kod bloğunu kullanan işleve test edersiniz. Bu benim şüphem olan –

cevap

7

Eğer iç işlev nesnenin kendisine, örneğin çıkarmak için bir yol sağlar Yalnızca

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

sizin dış işlevi birim testler aşırı ve toplam gizlilik için bu güçlü teklifi yenmek için güçsüz olan, kendi içinde bütünüyle iç birini (asla düzgün bunu cajoled zaman dışarıda percolate icar) gizleme ısrar ederse ;-).

+1

, teşekkürler. – Gattster

İlgili konular