2011-01-05 7 views
13

Testlerimi çalıştırmak ve testlerimi yapmak istediğimde her zaman bir veritabanı oluşturmak ve silmek için mevcut bir test veritabanını kullanmak istiyorum. Mümkün mü?Django Sınamalarının, her seferinde onu oluşturmak yerine kullanmak için nasıl bir veritabanı belirtebilirim?

+0

neden bunu istersiniz? Ayrıca veritabanı oluşturulmasını test etmek istersiniz ... –

+6

Yapılması saatler sürmez. –

+0

Testler için farklı DB motoru seçebilirsiniz (sqlite daha hızlı DB oluşturma yoluna sahiptir) –

cevap

14

Burada, mümkün bir yoludur:

1) Kendi testi koşucu nasıl olduğunu görmek için here bakmak tanımlayın. default test runner da özel test koşucu görünüm için

2), sadece kopyalayıp kod geçmiş ve sadece bu satırı yorum yapabilirsiniz: Test veritabanı imha etmekle sorumlu olan connection.creation.destroy_test_db(old_name, verbosity) ve i içinde connection.creation.create_test_db(..) çizgi koymak gerektiğini düşünüyorum Bu belki gibi bir şey hariç deneyin:

try: 
    # Create the database the first time. 
    connection.creation.create_test_db(verbosity, autoclobber=not interactive) 
except ..: # Look at the error that this will raise when create a database that already exist 
    # Test database already created. 
    pass 

3) test koşucu için setting.py içinde TEST_RUNNER doğaldır.

4) Şimdi böyle testinizi çalıştırın: ./manage.py testi

+0

Öyleyse bu iyi görünüyor ama hala yerel test bağlantısına kurmam gerekiyor db no? –

+0

@Ryan Detzel: Daha fazla ayrıntı için cevabımı düzenledim, sorduğum soru ile ilgili test kodunun üzerinde test kodu oluşturulduğunda ilk defa çalıştırılacağını düşünüyorum, bu test veritabanı atomik olarak Django tarafından oluşturuldu: http://docs.djangoproject.com/en/dev/topics/testing/?from=olddocs#the-test-database – mouad

+0

@mouad, bağlantı noktalarını bile yüklemeyecek şekilde ayarlayabilir miyim? –

6

kullanıyor Django> = test çalışır arasında test veritabanını korur --keepdb 1,8

python manage.py test --keepdb 

. Bu, özellikle büyük bir test paketindeki testleri yürütme süresini büyük ölçüde azaltabilen hem yaratma hem de yok etme eylemlerini atlama avantajına sahiptir. Test veritabanı mevcut değilse, ilk çalıştırmada oluşturulacak ve daha sonraki her çalışma için korunacaktır. Test paketini çalıştırmadan önce, test edilmemiş tüm geçişler de test veritabanına uygulanır.

+0

Django 1.6 için nasıl? benzer bir yolu var mı ?? –

İlgili konular