2011-09-30 3 views
2

현재 애플리케이션마다 하나의 조명기 파일을 사용하고 있지만 프로젝트가 커지면서 테스트가 너무 오래 걸리고 각 테스트 클래스에로드되는 (현재 대형) 조명기에 문제가 있다고 생각합니다.장고에서 테스트 데이터로 작업하는 가장 좋은 방법은 무엇입니까?

필자는 복제 및 유지 보수에 대한 우려로 더 작은 설비를 많이 사용하는 것을 피했지만 필연적이라고 생각합니다.

내가 그 경로를 따라 가기 전에 다른 사람들이 응용 프로그램/프로젝트를 테스트하기위한 도구를 사용하여 무엇을하는지 질문 할 것이라고 생각했습니다.

답변

0

테스트 목적으로 sqlite를 사용해야합니다. 다른 db 엔진과 비교할 때 속도면에서 상당한 차이가 있습니다.

+0

이 빠르다 당신이 넣은 데이터의 유효성을 확인하십시오. –

+0

@ 마크, 데이터 검증에 관한 귀하의 요점은 대부분의 경우 django로 작업 할 때 무의미합니다. sqlite가 메모리 내에서 작동하기 때문에 sqlite로 테스트하는 것이 '굉장히 빠릅니다'. mysql 또는 postrges가 일반적인 테이블 대신 메모리 내 테이블을 사용하도록 장고 설정을 구성 할 수 있습니다. 그렇게하면 데이터베이스간에 큰 차이가 없습니다. – Ski

+1

테스트 작성의 목표는 빠른 테스트 슈트를 갖는 것이 아닙니다. 그것은 당신의 코드가 Sqlite를 사용해서는 안되는 프로덕션으로 옮길 때해야 할 일을하는지 확인하는 것입니다. Django에서 코드를 작성하고 Sqlite를 전달하고 실제 데이터베이스에서 실패하는 후속 테스트 케이스를 작성하는 것은 간단합니다. 당신은 테스트를 위해 Sqlite를 사용하여 어떤 호의도하지 않는다. –

2

예 많은 수의 조명기로 문제가 발생했습니다. 테스트 스위트가 커짐에 따라 상수 직렬화 /로드가 합쳐집니다. 비품에 의존하기보다는 필요한대로 데이터를 생성하는 유틸리티 함수를 작성하는 것이 좋습니다. 예를 들어 당신이 같은 새로운 auth.User 생성하는 기능이있을 수 있습니다 임의의 문자열을 생성하는 함수를 작성

def create_user(data=None): 
    data = data or {} 
    defaults = { 
     'username': get_random_string(), 
     'email': get_random_email(), 
     'password': get_random_string() 
    } 
    defaults.update(data) 
    return User.objects.create_user(**defaults) 

를/이메일은 독자 :)에 대한 연습 문제로 남겨은 '아무튼 때문에

관련 문제