전 포스트에서 커밋 후크를 통해 내 장고 응용 프로그램에 통합을 제공하려고합니다.django 테스트 케이스에 의해 삽입 된 레코드를 볼 수 없습니다
(a) 테이블에 몇 개의 레코드를 삽입하고 (b) svn 커밋을 생성하며 (c) svn 커밋이 my를 사용하는 후크를 실행하는 django 테스트 케이스 (unittest.TestCase의 하위 클래스) 장고 모델 정보를 찾아보십시오.
저는 sqlite3 db를 사용하고 있습니다. 테스트는 이 아니며을 사용합니다 : memory : db, 실제 파일을 사용하고 있습니다. 내가 그것을 검사 할 수 있도록 완료되면 테스트 DB를 삭제하지 않도록 (이 문제를 디버깅하기위한) 장고 테스트 코드를 수정했습니다.
테스트 코드는 model.MyModel.objects.all()을 덤프하고 레코드는 (a)와 (b) 사이에 있습니다.
(c)에서 후크가 발생하면 모델도 덤프되고 레코드가 없습니다. 테스트를 실행 한 후 db를 수동으로 검사 할 때 레코드가 없습니다.
db 파일에 레코드를 커밋하지 않는 django 테스트 프레임 워크에 문제가 있습니까?
을 명확하게하려면 (d) 테스트 케이스를 끝내십시오. 따라서 svn 커밋 훅은 테스트 케이스가 종료되기 전에 실행되고 임의의 장고 db 정리 코드 이 실행되기 전에이 실행되어야합니다.
추가 정보 : (b)와 (b) 사이에 15 초 지연을 추가하여 테스트 중간에 수동으로 db 파일을 검사 할 수 있습니다. 레코드가 파일에 없습니다.
Vinay, 감사합니다. 내 나무에 그 코드가 있습니다. 트랜잭션 지원을 False로 설정 했으므로 이제 테스트가 끝납니다. – bstpierre
@bstpierre, 어떻게 트랜잭션 지원을 False로 설정 했습니까? – Greg
변경 집합의 모습에서 @Greg 아마도 TestCase 대신에'TransactionTestCase'를 사용했을 것입니다. 그러나이 중 일부는 지난 7 년 동안 변경되었을 가능성이 있습니다. ymmv – bstpierre