2013-02-14 23 views
11

Sadece bir şey döndürmeyen bir işlev için test etme konusunda nasıl giderim diye merak ediyordum. Hiç olmadığı, fonksiyon eşittir iddia bilmiyorumpython hiçbiri için unittest?

class TestIsIn(unittest.TestCase): 

    def test_one(self): 
    ''' Test if one character was added to the list''' 
    self.assertEqual(self.is_in('a'), and this is where I am lost) 

: Ben bunu test etmek için olsaydı o zaman

def is_in(char): 
    my_list = [] 
    my_list.append(char) 

ve: örneğin, ben bu işlevi olduğunu varsayalım ile karşılaştırılabilir değeri döndür.

DÜZENLEME: işe yarar mı?

cevap

4

Bir birim sınaması, işlevin yaptığı bir şeyi sınamaktır. Eğer bir değer geri dönmezse, o zaman aslında ne yapıyor?

def is_in(char, my_list): 
    my_list.append(char) 

Sonra char aslında eklenir olmadığını test etmek isteyeyim: my_list yerel değişkendir, ancak işlevi aslında böyle bir şey görünüyorsa beri bu durumda, bu bir şey yapıyor gibi görünmüyor liste. Testiniz olacaktır: işlev bir değer döndürmez

def test_one(self): 
    my_list = [] 
    is_in('a', my_list) 
    self.assertEqual(my_list, ['a']) 

beri (bunu bir değer döndürmez emin gerekmedikçe) bunun için hiçbir nokta testi yok.

20

Tüm Python işlevleri bir şey döndürür. Bir dönüş değeri belirtmezseniz, None döndürülür. Amacınız gerçekten bir şey bir değer döndürmez emin olmaktır Yani eğer, sadece

self.assertIsNone(self.is_in('a')) 

(Ancak, bu açık bir dönüş değeri olmayan bir fonksiyonu ayırt edemez demek ve return None işlevlerinden biri olabilir .)

İlgili konular