2013-08-12 2 views
2

저는 파이썬으로 유닛 테스트를하고 있었지만 설정 단계에서 테스트하려는 객체를 어떻게 인스턴스화해야하는지 알 수 없습니다. 각 테스트에 대해 새로운 객체로 끝납니다. 예를 들어, 나는 시험에 내가 원하는 다음과 같은 클래스가 각 단위 테스트에 대한유닛 테스트의 설정 단계에서 객체를 인스턴스화하는 방법

class Cfg(): 
    data = {} 

    def set(self, key, value): 
     self.data[key] = value 

    def get(self, key): 
     return self.data.get(key, None) 

, 내가 새로이 초기화 된 Cfg 객체를 원한다. 내 테스트는 다음과 같다 :

from cfg import Cfg 

class TestCfg(): 
    def setup(self): 
     self.cfg = Cfg() 

    def teardown(self): 
     self.cfg = None 

    def test_a(self): 
     self.cfg.set('foo', 'bar') 
     assert self.cfg.get('foo') == 'bar' 

    def test_b(self): 
     assert self.cfg.get('foo') == 'bar' 

내가 왜 test_b 패스를 이해하지 않습니다. setuptearDown이 내 cfg 인스턴스를 '재설정'한다고 예상했으나 테스트 간에는 cfg이 지속되는 것으로 보입니다. 내가 여기서 잘못하고있는 것은 무엇이며 예상되는 행동을 어떻게 성취 할 수 있습니까?

답변

3

이것은 사용자가 Cfg 클래스를 작성한 방법과 관련이 있습니다. 당신이 test_b 실패 보자,

class Cfg(): 
    def __init__(self): 
     self.data = {} 

    def set(self, key, value): 
     self.data[key] = value 

    def get(self, key): 
     return self.data.get(key, None) 

을 그리고 : __init__ 방법으로 data 초기화를 이동합니다.

+0

감사합니다. 문제가 'Cfg'클래스로 인한 것이라고 생각하지 않았습니다. 이것은 총체적인 감각을 만든다. –

관련 문제