이제 기존 코드에 대한 단위 테스트를하고 있습니다. 내가 다음 문제에 직면 : 테스트 데이터베이스를 만드는 syncdb를 실행 한 후여러 의존적 애플리케이션 문제로 장고를 로딩하는 Django 유닛 테스트
을, 장고가 자동으로 django_content_type 또는 auth_permissions 같은 여러 테이블을 채 웁니다.
그런 다음, 나는 복잡한 테스트를 실행해야 상상처럼 그들 사이에 LOF 하다며 데이터 테이블과 연결이 필요합니다 사용자 등록을 확인합니다.
만약 내가 기존의 모든 데이터베이스를 사용하여 조명기를 만들려고한다면 (나는 그다지 편리 할 것이다) - here과 같은 오류 메시지가 나타날 것이다. 이것은 장고가 이미 django_content_type과 같은 테이블을 채웠기 때문에 발생합니다.
다음으로 가능한 방법은 syncdb 테이블로 채워진 django dumpdata --exclude 옵션을 사용하는 것입니다. 그러나 이것도 잘 작동하지 않습니다. 왜냐하면 db와 User Permissions 테이블에서 UserDB와 User Permissions 테이블을 가져 와서 syncdb에 의해 자동 생성 되었기 때문에, 그것들을 연결하는 기본 키가 이제 잘못 가리 키기 때문에 에러를받을 수 있기 때문입니다. 이것은 더 나은 '고정 지옥'부분에 here 설명하지만,이 솔루션은
가내가 볼 다음 가능한 제도가 옆에) 잘 보이지 doensn't가 도시되어있다 :
- 내가 내 테스트를 실행하는거야; Django는 테스트 데이터베이스를 만들고 syncdb를 만들고 모든 테이블을 만듭니다.
- 내 테스트 환경에서이 데이터베이스를 삭제하고 새로운 빈 데이터베이스를 만듭니다. syncdb 테스트 데이터베이스를 만들었습니다
후, 테스트의 설정 부분에 내가 액세스
os.system
를 사용 - 데이터로드 문제가 해결 된 방법
'dumpdata --natural --exclude'를 사용할 수 있습니다. '--natural' 플래그는 django에게 기본 id를 대신하는 자연 키를 사용하도록 지시합니다. 예를 들어, ContentType 모델에 대한 모든 외래 키는'< "content-type-id> 대신'[" "", ""]'와 같이 덤프됩니다. –
Ski
이것은 많은 도움이되었습니다. 답변으로 제공해주십시오. – LaundroMat