2013-10-04 4 views
1

테스트를 실행할 때 테스트 데이터베이스를 만들 때 모든 데이터가있는 기존 데이터베이스를 복사하고 싶습니다.테스트 데이터베이스를 만들 때 기존 데이터베이스의 모든 데이터를 복사하십시오. Django

제 동료 중 한 명이 그의 테스트에 POSTGIS_TEMPLATE = DATABASES['default']['NAME']을 사용할 때까지는 이런 생각을하지 않았습니다. 프로젝트에 GeoDjango을 사용 했으므로 POSTGIS_TEMPLATE은 테스트 러너가 사용할 포스트스 위스 데이터베이스 템플릿을 알 수 있도록하기 위해 존재합니다. 그리고 그가 위에서 언급 한 것처럼 그것을 정의하면 실제로 모든 데이터로 테스트 데이터베이스가 생성됩니다. 그것은 우리를 위해 약간 편리한, 그래서 우리는 조명기 파일을 만들 필요가 없습니다. 그러나 우리가 GeoDjango을 사용하지 않는 프로젝트와 같은 것을 할 수 없다면.

그래서 두 가지 질문이 있습니다. 이미 프로젝트 데이터베이스에있는 데이터를 사용하는 것이 좋습니까? (일부 테스트에서는 특정 테이블에 대해 모든 데이터를 먼저 삭제해야 할 수도 있지만 대부분 비어있는 데이터 세트에 대해 테스트합니다.) GeoDjango을 사용하지 않는 프로젝트의 경우 좋지 않은 생각이라면, 어쨌든 기존 데이터베이스의 데이터를 복사하도록 설정할 수 있습니까?

답변

0

프로젝트 데이터베이스에 기존 데이터를 사용하는 것이 좋은 생각입니까?

아니요 - 변경 될 가능성이 있으므로 테스트에서 이상한 비 결정적 행동으로 이어질 수 있습니다.

가장 안전한 옵션은 기존 데이터를 ./manage.py dumpdata으로 덤프 한 다음 개별 테스트에서 조명기로로드하는 것입니다. This documentation에는 방법이 설명되어 있습니다.

+0

내가 질문에서 언급 한 것처럼, 나는 로딩 비품 방식을 알고있다. 하지만 복사 된 데이터베이스가 있다면 그렇게 할 필요가 없습니다. 'dumpdata'를 사용하고로드하십시오. 같은 데이터를 복사 한 데이터베이스를 만드는 것과 마찬가지입니다. – tmaster

+0

같은 데이터로 끝나 겠지만 데이터가 테스트마다 바뀌지는 않습니다. prod 데이터베이스를 사용하여 테스트 데이터를 생성하고 테스트를 실행하는 동안 데이터베이스가 변경되거나 테스트 실행에서 테스트 실행으로 변경되면 일관성없는 결과가 발생할 수 있습니다. –

+0

아니요, 테스트 러너가 시작되면 데이터베이스를 복사하므로 테스트를 실행하는 동안 테스트 데이터베이스가 변경되지 않습니다. 다음 테스트 실행시 변경 될 수 있습니다. 코드에 버그가 없으면 일관성없는 결과를 얻지 않아야합니다. 테스트를 수행하는 전체 지점이 다른 데이터 세트에 대해 실행 중일 때 일관성없는 결과를 방지하기 위해서입니다. – tmaster

관련 문제