2016-03-25 26 views
3

Benim Python sürümüPython UnitTest ve nesne başlatma

3.5.1 Basit bir kod (tests.py) var: Ben komut 'piton tests.py' ile çalıştırırsanız

import unittest 

class SimpleObject(object): 
    array = [] 

class SimpleTestCase(unittest.TestCase): 

    def test_first(self): 
     simple_object = SimpleObject() 
     simple_object.array.append(1) 

     self.assertEqual(len(simple_object.array), 1) 

    def test_second(self): 
     simple_object = SimpleObject() 
     simple_object.array.append(1) 

     self.assertEqual(len(simple_object.array), 1) 

if __name__ == '__main__': 
    unittest.main() 

Ben sonuçları alırsınız:

.F 
====================================================================== 
FAIL: test_second (__main__.SimpleTestCase) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "tests.py", line 105, in test_second 
    self.assertEqual(len(simple_object.array), 1) 
AssertionError: 2 != 1 

---------------------------------------------------------------------- 
Ran 2 tests in 0.003s 

FAILED (failures=1) 

Neden oluyor? Ve nasıl düzeltilir. Her testin bağımsız olacağını (her testin geçmesi gerektiğini) beklerim, fakat görebildiğimiz gibi değil.

cevap

4

Dizi, sınıfın tüm örnekleriyle paylaşılır. İsterseniz dizi sınıf başlatıcısı koymak gerekir Bir örneğe özgü olması:

class SimpleObject(object): 
    def __init__(self): 
     self.array = [] 

fazla bilgi için bu soruya bir göz atın: class variables is shared across all instances in python?

+0

teşekkür ederiz. Ne yeni bir hata oldu :) Cevabınızı 9 dakika içinde kabul ediyorum. – Tom