Django 1.7 đã giới thiệu việc di chuyển cơ sở dữ liệu .
Khi chạy các bài kiểm tra đơn vị trong Django 1.7, nó buộc phải di chuyển , mất nhiều thời gian. Vì vậy, tôi muốn bỏ qua việc di chuyển django và tạo cơ sở dữ liệu ở trạng thái cuối cùng.
Tôi biết rằng việc bỏ qua các di chuyển có thể là một phương pháp không tốt, vì phần đó của mã sẽ không được kiểm tra. Nhưng không phải vậy: Tôi đang chạy quá trình di chuyển đầy đủ trong máy chủ kiểm tra CI (jenkins). Tôi chỉ muốn bỏ qua quá trình di chuyển trong các bài kiểm tra cục bộ của mình, nơi tốc độ quan trọng.
Một số bối cảnh:
Cho đến Django 1.6 , khi sử dụng South, tôi đã sử dụng cài đặt SOUTH_TESTS_MIGRATE :
Theo mặc định, lệnh syncdb của South cũng sẽ áp dụng di chuyển nếu nó chạy ở chế độ không tương tác, bao gồm cả khi bạn đang chạy thử nghiệm - nó sẽ chạy mọi di chuyển mỗi khi bạn chạy thử nghiệm của mình.
Nếu bạn muốn trình chạy thử nghiệm sử dụng syncdb thay vì di chuyển - ví dụ: nếu quá trình di chuyển của bạn mất quá nhiều thời gian để áp dụng - chỉ cần đặt SOUTH_TESTS_MIGRATE = False trong settings.py.
Tuy nhiên, syncdb không tồn tại nữa, bây giờ nó sẽ di chuyển .
Và từ Django 1.8, tôi sẽ sử dụng tham số --keepdb :
Tùy chọn --keepdb có thể được sử dụng để duy trì cơ sở dữ liệu thử nghiệm giữa các lần chạy thử nghiệm. Điều này có lợi thế là bỏ qua cả hành động tạo và hủy, giúp giảm đáng kể thời gian chạy thử nghiệm, đặc biệt là những hành động trong một bộ thử nghiệm lớn. Nếu cơ sở dữ liệu thử nghiệm không tồn tại, nó sẽ được tạo trong lần chạy đầu tiên và sau đó được giữ nguyên cho mỗi lần chạy tiếp theo. Mọi di chuyển chưa được áp dụng cũng sẽ được áp dụng cho cơ sở dữ liệu thử nghiệm trước khi chạy bộ thử nghiệm.
Vì vậy, câu hỏi này được giới hạn trong Django 1.7.
django-test-without-migrations
gói đã thực sự có ích đối với tôi, bạn có thể muốn thay đổi câu trả lời được chấp nhận để stackoverflow.com/a/28993456/200224