2013-10-11 2 views
6

Python에서 느슨하게 정의 된 dict 객체를 모방하는 쉬운 방법이 있습니까? 예를 들어, 주어진 그림을 쉽게 표현하려면 input, 그 값이 최소값과 최대 값, 길이 및 유형과 같은 특정 메타 정의를 따르는 지 확인하고 싶습니다.느슨하게 정의 된 Python dict 객체를 모방하는 쉬운 방법

테스트를 작성할 때이 작업을 수행하는 것이 편리 할 수 ​​있습니다. (파이썬 버전 unittest.mock 3.3 이상) mock에서

한 값처럼 ANY 값이 될 수 있도록 지정할 수

처럼 딕셔너리 형상 물체되어야 하는지를 상기 bar 경우

>>> mock = Mock(return_value=None) 
>>> mock('foo', bar=object()) 
>>> mock.assert_called_once_with('foo', bar=ANY) 

에서 실제로 AnyValid를 작성했습니다

>>> {'baz': <an integer between -3 and 14>, 'qux': <'yes' or 'no'>} 

답변

5

, formencodeunittest.mock에서 구현 된 위대한 일을 활용하는 최소한의 라이브러리, 같은 처리하기 위해 사례. AnyValid은 많은 다른 조건이 지정 될 수 formencode의 검증의 큰 세트로부터 임의의 검증을 할 수 있기 때문에 상술 한 바와 같은 딕셔너리 개체를 시험 예

은 다음

>>> from mock import Mock 
>>> from any_valid import AnyValid, Int, OneOf 
>>> valid_bar = { 
...  'baz': AnyValid(Int(min=-3, max=14)), 
...  'qux': AnyValid(OneOf(['yes', 'no'])), 
...  } 
>>> mock = Mock(return_value=None) 
>>> mock('foo', bar={'baz': 4, 'qux': 'yes'}) 
>>> mock.assert_called_once_with('foo', bar=valid_bar) 
>>> 

같이 표현 될 수있다 비슷한 표현 방식.

+0

라이브러리를 작성하는 데 9 분, 멋진 –