2012-06-05 17 views
9

Küçük uygulamamı test etmek istiyorum, ayrı bir pakette saklıyorum. Şu anda bir "test_project" dizini oluşturdum, orada bir test projesi oluşturdum ve testleri çalıştırmak için projenin manage.py dosyasını kullanıyorum. Ama merak etmeye devam ediyorum - daha iyi bir yöntem var mı? Tek bir uygulamanın testlerini, belki de bazı varsayılan konfigürasyonlarla (sqlite veritabanı gibi) başlatmak mümkün mü?Django'da tek bir uygulama (proje değil) nasıl test edilir?

cevap

1

Bu amaç için bir Django test projesi oluşturmadan tek bir uygulamanın sınamalarını bağımsız olarak çalıştırmak mümkündür. Bunu yapmanın bir yolu, uygulamanızın Django ayarlarını ayarlayan ve ./manage.py test your_app'u programlı olarak çalıştıran bir kök dizine runtests.py oluşturmaktır. runtests.py'un bir örneği, Django'nun kendi: runtests.py (documentation).

Django'nun kendine ait runtests.py iyi bir başvuru kaynağıdır, ancak çoğu durumda kıvrımlı buluyorum.

+0

olmalıdır. Sizden destek aldınız ve kabul edilmiş bir cevap olarak işaretledim. Bilgi eklemenizi gerçekten çok isterim, çünkü Django'nun "runtests.py" adlı bir versiyonu destekleniyor. Yeni mi? – dotz

+0

@dotz, bu çok ilginç bir soru, cevabını bilmiyordum ama buna direnemedim. Django'nun "runtests.py" 'inin 2005 yılında oluşturulduğu ve v1.0'dan beri mevcut olduğunu görebildiğim kadarıyla. Asıl işlem şu: https://github.com/django/django/commit/daf8467b37f7aaae0b463b40a2c9d98f1f53c556#diff-bf0d7f89b37ba018fb5c5b2833b37dd3 –

0

Tabii sen can herhangi django bağımlılıkları

Bir Django ortamı gerekmiyorsa unittest bir bağımsız olan Python parçalar en az bir settings.py ve manage.py dosyası gerektirir testi. Bunları yalnızca temel öğelerle düzenleyebilir ve uygulamanızı manage.py ile UnitTest yapabilirsiniz. Bir projeyi Django çalışma ortamı olarak görmelisiniz, onsuz Django yok. Muhtemelen ayarları taklit edebilirsiniz ama tbh basitlikten daha çok hack oluşturuyor olursunuz.

5

Burun kullanırsanız, tek bir uygulamanın testlerini çalıştırabilirsiniz. tek bir uygulamayı test etmek için olduğu gibi

python manage.py test app.tests:TestClassHere

. Sadece diğer büyük django projelerinin yaptığı konvansiyonu takip ediyorum ve bu tam olarak yaptığınız şey. Bir test_project dizini oluşturun. o benim için yeterince iyi büyük Django geçmeli bazı uygulamalar için yeterince iyi olup olmadığını

https://bitbucket.org/jespern/django-piston/src/7c90898072ce/tests/test_project

Düşündüm.

Project dir/ 
    /myapp 
    /myotherapp 
    /myproject 

Django sen çalıştırmasına izin veriyor: En django yapısı olması gerektiği gibi böyle bir şey görünüyorsa burada henüz

From the docs

onu görmüyorum çünkü

+0

en iyi biriydi olarak bu kabul cevabı oldu çok uzun bir süre için teşekkür ederiz: Aşağıda alternatif birkaç örnek bulunmaktadır. Şu anda bu Dario tarafından daha iyi olduğunu düşünüyorum. Yaklaşık 5 yıl boyunca kabul edilen cevap olduğunuz için teşekkür ederiz. – dotz

5

bu yazıya dökmek Sadece "myotherapp" den yürütmek için "0: 0355"Bu projeler dizinindeki tüm test yapacağını

./manage.py test 

oysa "myotherapp" altındaki tüm test yapacağını.

+0

Seçilen cevap –

İlgili konular