Nasıl django'bellek sadece test veritabanı s çalıştırmak için?
Django benim birim çalıştırmak için uzun zaman alır testleri, bunu hızlandırmak için bir yol arıyorum. Bir SSD yüklemeden düşünüyorum ama çok olumsuz tarafları var biliyorum. Tabii ki benim kod ile yapabileceğim şeyler var, ama yapısal bir düzeltme arıyorum. Hatta tek bir test veritabanı / Güney her zaman yeniden inşa geçirilmiş olması gerektiği için yavaş. İşte benim fikrim!
Test veritabanında her zaman oldukça küçük olacak biliyorum, neden gidip sistem her zaman RAM tüm test veritabanı tutmak için yapılandırabilir mi? Hiç disk dokunun. Kimseye django bu yapılandırmak için nasıl biliyor mu? Bu üretim kullanıyorum ne zamandan beri mysql kullanmaya devam etmeyi tercih ederim, ama eğer sqlite3 ya da başka bir şey bu kadar kolay yapar, öyle giderim.
Sqlite veya mysql tamamen hafızasında çalıştırmak için bir seçenek var mı? Bunun olması mümkün yapılandırmak için bir RAM disk ve yapılandırma, test veritabanı için mağaza veri yok, ama nasıl emin değilim söyle django / mysql için kullanmak farklı bir datadır için belirli bir veritabanı, özellikle bu yana sağlıyor sildim ve yeniden her çalıştırın. (Mac FWIW değilim.)
Herhangi bir işaretçiler takdir ya da deneyim. Bu kelimenin tam anlamıyla kod ile ilgili bir soru değil, ama kesinlikle eminim ki yazılım mühendisliği bir sorun varsa özür dilerim eğer bir şık varsa orada bir sürü insan yararına çözecek.
CEVAP
Testlerinizi, Django will use a in-memory database çalıştırdığınızda sqlite3 veritabanı motoru olarak ayarlayın.
Motor testleri çalıştırırken sqlite için ayarlayın.* *4 benim bu gibi bir kod kullanıyorum:
if 'test' in sys.argv:
DATABASE_ENGINE = 'sqlite3'
Veya Django 1.2:
if 'test' in sys.argv:
DATABASES['default'] = {'ENGINE': 'sqlite3'}
Ve nihayet Django 1.3 ve 1.4
if 'test' in sys.argv:
DATABASES['default'] = {'ENGINE': 'django.db.backends.sqlite3'}
(Arka uç tam yolunu Django 1.3, ama ayarı ileri uyumlu hale getirir ile kesinlikle gerekli değil.)
Ayrıca Güney göçler ile ilgili sorunlar yaşıyorsanız durumunda aşağıdaki satırı ekleyebilirsiniz:
SOUTH_TESTS_MIGRATE = False
Nasıl JUnit4 belirli sırayla test yönt...
Nasıl komut satırından JUnit test duru...
tek bir test çalıştırmak için nasıl rs...
Nasıl veritabanı sorguları ile bir nes...
Raylar çalıştırmak için nasıl bir test...