2015-01-22 5 views
0

N00b 코 프레임은 여기.코 - 클래스 상수를 스텁 가능합니까?

unittest.mock에 대한 문서를 보면 변수를 스텁하는 명백한 방법이 없습니다. 선언 된 상수가있는 클래스를 테스트하고 있습니다. 한 상수는 정말 큰 int이며 테스트 목적으로, 나는 훨씬 작은 int로 대체하고 싶습니다.

필자가 알고있는 사실은 @patch 데코레이터를 사용하여 모방 할 수있는 것이지 변수가 아니라는 것입니다.

가능한가요? 그렇다면 어떻게해야합니까?

답변

2

상수를 바꾸려면 패치 데코레이터를 사용할 수 있습니다. 예 :

>>> import mock 
>>> class Foo(object): 
... bar = 1000000 
... 
>>> with mock.patch.object(Foo, 'bar', 10): 
... print(Foo.bar) 
... 
10 
>>> print(Foo.bar) 
1000000 

특히, 내가 python2.x 위치에있어 ... patch (또는 patch 가족의 다양한 항목 중)에 new 키워드 인수에 대해 documentation

mock은 여전히 ​​제 3 자 모듈이었습니다. from unittest import mock으로 변경하면 위 코드를 사용할 수 있습니다.