2013-02-27 5 views
4

모든 유닛 테스트 파일은 django.test.TestCase 클래스로 구성되어 있습니다.Django 테스트 데이터베이스가 자동 플러시가 아닙니다.

내 __init__.py 파일에서 주석 파일의 주석 처리를 제거/주석 처리하기 위해 쉘 스크립트를 작성 했으므로 명령 줄 인수를 기반으로 특정 테스트 파일에서 테스트를 실행할 수 있습니다. 또한 한 번에 모든 테스트 파일의 모든 테스트를 실행할 수 있습니다 (회귀 테스트 목적으로).

일부 JSON 조명기가있는이 테스트 파일이 있고 첫 번째 테스트에서는 특정 모델/테이블에 3 개의 레코드 (JSON 조명기로 정의 됨)가 있는지 확인합니다.

그래서 여기에 문제가 있습니다.이 테스트 파일을 자체적으로 실행하면 테스트는 비행 색으로 지나치지 만 내가 언급 한 다른 테스트 사례로 테스트를 실행하면 실패합니다.

모든 테스트를 실행하면 데이터베이스에는 테이블/모델에 6 개의 레코드가 있지만 테스트 파일이 단독으로 실행될 때와 같이 3 개 (조명기의 것)가 있어야한다고 나와 있습니다.

다른 테스트 파일 (모두 아님)을 사용하여 해당 테스트 파일을 실행 해 보았습니다. 모든 테스트 파일이 실행될 때만 그렇습니다.

나를 장고 또는 PostgreSQL (DB를 사용하고 있습니다) 버그가있는 것 같습니다. 장고 테스트 케이스는 자동 플러시/각 테스트 메서드 사이에 데이터베이스를 다시 설정해야하기 때문에 클래스 테스트는 할 수 없습니까?

+0

이것은 PostgreSQL의 버그 일 가능성이 거의 없으므로 장고 팀을 따라 할 것을 권합니다. 당신의 설명에서 당신은 일어날 것으로 예상되는 롤백이 끝나지 않은 것처럼 들립니다. –

답변

0

이것은 Dzango의 TestCase와 TransactionTestCase간에 정리가 이루어지는 방식의 차이 때문일 가능성이 큽니다. 전에 Django 1.5 TransactionTestCases는 TestCases (그리고 Djangos testunner가 당신을 위해 수행 한) 후에 실행해야했습니다. 이것은 fixed in 1.5이어야합니다. 따라서 테스트를 다시 실행 해보십시오.