Django 1.7 memperkenalkan migrasi basis data .
Saat menjalankan pengujian unit di Django 1.7, ini memaksa migrasi , yang membutuhkan waktu lama. Jadi saya ingin melewatkan migrasi django, dan membuat database pada kondisi akhir.
Saya tahu bahwa mengabaikan migrasi bisa menjadi praktik yang buruk, karena bagian kode itu tidak akan diuji. Tapi bukan itu masalahnya: Saya menjalankan migrasi penuh di server pengujian CI (jenkins). Saya hanya ingin melewatkan migrasi dalam pengujian lokal saya, yang mengutamakan kecepatan.
Beberapa konteks:
Hingga Django 1.6 , ketika menggunakan Selatan, saya menggunakan pengaturan SOUTH_TESTS_MIGRATE :
Secara default, perintah syncdb South juga akan menerapkan migrasi jika dijalankan dalam mode non-interaktif, termasuk saat Anda menjalankan pengujian - perintah ini akan menjalankan setiap migrasi setiap kali Anda menjalankan pengujian.
Jika Anda ingin runner pengujian menggunakan syncdb daripada migrasi - misalnya, jika migrasi Anda memakan waktu terlalu lama untuk diterapkan - cukup setel SOUTH_TESTS_MIGRATE = False di settings.py.
Namun, syncdb tidak ada lagi, sekarang sudah dimigrasi .
Dan dari Django 1.8 saya akan menggunakan parameter --keepdb :
Opsi --keepdb dapat digunakan untuk mempertahankan database pengujian di antara pengujian yang dijalankan. Keuntungannya adalah melewatkan tindakan buat dan penghancuran yang sangat mengurangi waktu untuk menjalankan pengujian, terutama yang ada dalam rangkaian pengujian yang besar. Jika database pengujian tidak ada, database akan dibuat saat dijalankan pertama kali dan kemudian dipertahankan untuk setiap proses berikutnya. Migrasi apa pun yang belum diterapkan juga akan diterapkan ke database pengujian sebelum menjalankan rangkaian pengujian.
Jadi pertanyaan ini terbatas pada Django 1.7.
django-test-without-migrations
paket telah benar-benar berguna bagi saya, Anda mungkin ingin mengubah jawaban yang diterima untuk stackoverflow.com/a/28993456/200224