Django 1.7 , veritabanı geçişlerini tanıttı .
Django 1.7'de birim testlerini çalıştırırken, uzun zaman alan bir geçişi zorlar . Bu yüzden django geçişlerini atlamak ve veritabanını son durumda oluşturmak istiyorum.
Kodun bu kısmı test edilmeyeceği için geçişleri görmezden gelmenin kötü bir uygulama olabileceğini biliyorum. Ancak durum bu değil: CI test sunucusunda (jenkins) tam geçişleri çalıştırıyorum. Sadece hızın önemli olduğu yerel testlerimde geçişleri atlamak istiyorum.
Bazı bağlam:
Django kadar 1.6 Güney kullanırken, kullandığım SOUTH_TESTS_MIGRATE ayarı:
Varsayılan olarak, South'un syncdb komutu, etkileşimli olmayan modda çalıştırılırsa, testleri çalıştırdığınızda da dahil olmak üzere geçişleri uygular - testlerinizi her çalıştırdığınızda her geçişi çalıştırır.
Test çalıştırıcısının taşıma yerine syncdb kullanmasını istiyorsanız - örneğin, geçişleriniz çok uzun sürüyorsa - settings.py içinde SOUTH_TESTS_MIGRATE = False ayarını yapmanız yeterlidir.
Ancak syncdb artık mevcut değil, şimdi göç ediyor .
Ve Django 1.8'den --keepdb parametresini kullanacağım :
--Keepdb seçeneği, test çalıştırmaları arasında test veritabanını korumak için kullanılabilir. Bu, hem oluşturma hem de yok etme eylemlerini atlama avantajına sahiptir ve bu da, özellikle büyük bir test paketindekiler olmak üzere testleri çalıştırma süresini büyük ölçüde azaltır. Test veritabanı yoksa, ilk çalıştırmada oluşturulur ve ardından sonraki her çalıştırmada korunur. Uygulanmayan geçişler, test paketini çalıştırmadan önce test veritabanına da uygulanacaktır.
Yani bu soru Django 1.7 ile sınırlıdır.
django-test-without-migrations
Paket için kabul edilen cevabını değiştirmek isteyebilirsiniz, benim için gerçekten kullanışlı olmuştur stackoverflow.com/a/28993456/200224