Django 1.7 은 데이터베이스 마이그레이션을 도입했습니다 .
Django 1.7에서 단위 테스트를 실행하면 시간이 오래 걸리는 migrate를 강제 실행합니다 . 그래서 장고 마이그레이션을 건너 뛰고 최종 상태에서 데이터베이스를 만들고 싶습니다.
마이그레이션을 무시하는 것은 코드의 해당 부분이 테스트되지 않기 때문에 나쁜 습관이 될 수 있다는 것을 알고 있습니다. 그러나 그것은 사실이 아닙니다. 저는 CI 테스트 서버 (jenkins)에서 전체 마이그레이션을 실행하고 있습니다. 속도가 중요한 로컬 테스트에서만 마이그레이션을 건너 뛰고 싶습니다.
일부 컨텍스트 :
Django 1.6 까지는 South를 사용할 때 SOUTH_TESTS_MIGRATE 설정을 사용했습니다 .
기본적으로 South의 syncdb 명령은 테스트를 실행할 때를 포함하여 비대화 형 모드에서 실행되는 경우 마이그레이션도 적용합니다. 테스트를 실행할 때마다 모든 마이그레이션이 실행됩니다.
테스트 실행기가 마이그레이션 대신 syncdb를 사용하도록하려면 (예 : 마이그레이션을 적용하는 데 너무 오래 걸리는 경우) settings.py에서 SOUTH_TESTS_MIGRATE = False를 설정하면됩니다.
그러나 syncdb 는 더 이상 존재하지 않으며 이제 migrate 입니다.
그리고 Django 1.8 에서 --keepdb 매개 변수를 사용합니다 .
--keepdb 옵션을 사용하여 테스트 실행 사이에 테스트 데이터베이스를 보존 할 수 있습니다. 이는 생성 및 삭제 작업을 모두 건너 뛰는 이점이있어 특히 대규모 테스트 스위트의 테스트 실행 시간을 크게 단축합니다. 테스트 데이터베이스가 존재하지 않는 경우 첫 번째 실행시 생성 된 다음 이후 실행될 때마다 보존됩니다. 적용되지 않은 마이그레이션은 테스트 스위트를 실행하기 전에 테스트 데이터베이스에도 적용됩니다.
따라서이 질문은 Django 1.7로 제한됩니다.
django-test-without-migrations
패키지는 당신이 허용 대답을 변경 할 수 있습니다, 나를 위해 정말 편리하고있다 stackoverflow.com/a/28993456/200224