2012-04-24 2 views
3

나는 파이썬에서 unittest 라이브러리를 사용하여 테스트를 작성하고있다. 테스트 데이터가 다른 여러 테스트 환경이있다.별도의 저장소에 테스트 참조 데이터를 저장하는 방법은 무엇입니까?

  • 테스트 참조 데이터를 저장하는 가장 좋은 방법은 무엇입니까 ('테스트 * .py'파일에 넣지 않으려 고합니다)?
  • 특수한 형식으로 저장하는 좋은 방법이 있습니까 (메서드를 호출하여 값을 비교하여 출력 할 값을 비교할 때)?

아이디어가 있으십니까?

+0

Andrew, 조금 편집했습니다. 데이터 저장소에 "입력 데이터"와 "예상 결과"가있을 것으로 기대하십니까? – karlcow

답변

1

사용자 지정 저장소에서 데이터 검색을 수행하는 데코레이터를 작성하여 실제 테스트 기능에 전달할 수 있습니다.

data = lambda: (
    { 
    'input': '1234', 
    'expected_op': '1234' 
    }, 
    { 
    'input': '1234', 
    'expected_op': '1234' 
    } 
) 

@helper.data_provider(data) 
def test_something(self, input, expected_op): 
    self.assertEqual(input, expected_op) 

이제 장식은 모든 데이터 점을 테스트 함수를 호출합니다 :

from functools import wraps 

def data_provider(fn_dp): 
    def test_decorator(fn_test): 
    @wraps(fn_test) 
    def wrapper(self, *args, **kwds): 
     for data in fn_dp(): 
     try: 
      fn_test(self, **data) 
     except AssertionError, e: 
      raise(AssertionError('{0} - [{1}]'.format(e, data))) 
    return wrapper 
    return test_decorator 

지금 내가 이렇게 내 unittests를 작성할 수

실내 장식 : 나는 과거에 이런 짓을했습니다 .

구체적인 경우는 fn_test(self, **data)data_provider에서 확인하십시오. **data 대신 사용자 정의 저장소에서 읽고 여기에서 테스트 함수를 호출 할 수 있습니다.

+0

데이터 저장소를 구성하는 방법을 알아야합니다. 즉 : 2 개의 입력 (필자가 가지고있는)을 채우고 버튼을 클릭하여 결과 (표)를 확인해야합니다. –

0

다음 내 솔루션 : 가 나는 스토리지 클래스, 마녀는 각 검사 전에 JSON 파일에서 테스트 데이터 (설정 방법에서 호출)받을 가지고

def setUp(self): 
    self.data = self.storage.getDataFor(self._testMethodName) 

def test_ftu_02_003(self): 
    self.assertEqual(self.data['title'], self.page.get_title()) 
    self.assertEqual(self.data['header'], self.page.get_header()) 

및 샘플 JSON 파일 예를 들어, JSON 파일 이름은 동일 평 파일 이름으로 :

{ 
"test_ftu_02_003":{ 
    "title":"example_title", 
    "header":"example_title" 
    } 
} 

그래서 각 환경에 대한 파일과 폴더의 경로를 변경할 수 있으며, 파이썬 코드에서 JSON 파일을 다시 작성하기 쉽습니다.

질문 : 출력 데이터는 어떻습니까?
답변 : 모든 데이터가 입력 된 데이터입니다 (어설 션 *으로 입력 됨)

관련 문제