2009-03-05 9 views
7

장고 응용 프로그램의 단위 테스트를 개발하면서 manage.py 테스트를 반복해서 실행하고 있습니다. MySQL 백엔드를 사용 중이며 프로젝트에 많은 모델이 있으므로 모든 테스트 데이터베이스를 작성하는 데 소요되는 시간이 약 30 초입니다.django unit tests (manage.py를 통해)를 더 빨리 수행 할 수 있습니다.

데이터베이스 테이블을 생성하고 "manage.py test"명령 실행 사이의 모든 레코드를 지우는 방법으로 각 유닛 테스트를 더 빨리 수행 할 수 있습니까?

답변

7

주 매번 전체 테스트 스위트를 실행할 필요가 없다는 것을 의미합니다. manage.py test appname (또는 한 번에 여러 앱의 경우 manage.py test app1 app2 ...)을 실행하여 단일 앱에 대한 테스트 스위트를 실행할 수 있습니다.

내 일상적인 워크 플로는 제가 일하는 동안 작동중인 앱에 대한 테스트를 실행하고 다음 변경 사항 집합을 커밋하기 전에 전체 제품군을 실행하는 것입니다.

+0

그러나 여전히 INSTALLED_APPS에 각 모듈에 대한 데이터베이스를 만듭니다. 즉, 더 많은 시간이 걸립니다. – Bryce

4

나는 그것을 시도했지만 있다는 점에서 최근의 검사는 검사가 다음 롤백 트랜잭션 내에서 실행 할 수 있도록하여 도움을하도록되어 있었다되지 않은 :

Documentationdeveloper commentary

1

나는 내 MySQL 데이터베이스 용 램 디스크를 사용하고 있으며, 설명하지도 않으며 테스트중인 특정 응용 프로그램 내에서 특정 테스트를 테스트하는 것과 결합하여 테스트 시간을 획기적으로 줄일 수 있습니다. 데이터베이스에 대한 램 디스크 생성을 자동화하는 스크립트가 몇 가지 있는데, 나는 동역자 중 하나가 요리 한 mysql-ramdisk.py을 사용합니다.이 버전은 Mac OS X 용입니다. 또한 Linux 버전 here도 있습니다. 장고 dev에 대한 모든 것을 설정하는 데 약 30 초가 걸립니다 및 내 테스트는 때로는 기본 테스트 데이터베이스의 생성을 포함하여 5 초 미만에서 실행됩니다. ;)

0

이 스레드에 게시 된 : How do I run a unit test against the production database?, 나는 프로덕션 db (내 로컬 dev 컴퓨터에서 "manage.py shell"을 통해) 또는 일반 django "manage"에 대해 실행할 수있는 테스트 스위트를 만듭니다. py test "테스트 스위트. 신속한 온 전성 검사를 수행하고 개발 중 시간 유효성 확인을 저지르는 것은 나를 위해 실시간으로 보호 해 왔습니다. 두 경우 모두 동일한 db (MySQL)에 대해 실행 중이며 내 테스트에서 장고 ORM을 얻습니다.

관련 문제