2010-03-04 21 views
5

Bir modülün düzgün şekilde yüklenip yüklenmediğini görmek için bir yazım denetlemenin pythonik yolu nedir? Düzgün yüklü olarak, bir ImportError: foo adında modül yok. Bunu test etmek gerekiyordu nedenPython'da bir modülün içe aktarılmasıyla ilgili bir yazım nasıl yazılır

+6

Genellikle, ünite testi için fazla bir şey yoktur. İçe aktarma ifadesine güvenmiyor musunuz? İthalat kod satırı o kadar basit - ve denetlenmesi o kadar kolay ki - ünite testine biraz saçma geliyor gibi görünüyor. Neden "import" ifadesini test ediyorsunuz? –

+0

Django uygulamamı farklı bir sunucuya dağıtmak zorunda olduğumdan ve gerekli tüm modüllerin kurulu olduğundan emin olmak istediğim bazı ekstra modüller gerektiriyor. Örneğin, python 2.5 için simplejson'un kurulduğundan emin olun. Tabii ki ithalat beyanına güveniyorum, sadece ihtiyacım olan bir modülü kurmayı unutmak istemiyorum. – DrDee

+1

Görünüşe göre üretim ortamında test yapıyorsunuz, bu da garip. Her neyse, paket yöneticiniz için uygun bir bağımlılığa sahip olduğunuzu test ediyorsunuz. Uygulamanız için paketler oluşturun veya pythonic bağımlılık yöneticilerini kullanın (virtualenv'de pip ve pip install -r requirements.txt akla gelir). – Almad

cevap

5

As I have to deploy my Django application on a different server and it requires some extra modules I want to make sure that all required modules are installed.

Bu, bir birim sınama senaryosu değildir.

Bu, bir üretim hazırlık süreci ve teknik olarak - uygulamanızın bir testi değil.

Bu, ortamla ilgili bir sorudur. Bizimki onlarca şey içerir.

Böyle basit bir komut dosyasıyla başlayın. Var olduğundan emin olmak için ihtiyacınız olan her şeyi ekleyin.

try: 
    import simplejson 
except ImportError: 
    print "***FAILURE: simplejson missing***" 
    sys.exit(2) 
sys.exit(0) 

Bu komut dosyasını, kurulumun bir parçası olarak her ortamda çalıştırın. Hiç bir birim testi değil. Kurulum kurulumu için bir önkoşuldur.

+0

Çok teşekkürler ve yanlış terminolojiyi kullandığım için özür dilerim, yanlış bir şekilde bir sürü insanı yanlış ayağa koydu :) – DrDee

1

görmüyorum, ama bir şey gibi: değil geçerse

bir ithalat hata testi kaldırılırsa
def my_import_test(self): 
    import my_module 

, başarısız oldu.

+0

Belki de ihtiyacım olan şeylerde net değilim. Bir modülün içe aktarılmasının başarılı olup olmadığını test etmek istiyorum, böylece hangi modüllerin eksik olduğunu ve yüklenmesinin gerekip gerekmediğini görebiliyorum. Öyleyse bir self.assertUnequals ... deyimini nasıl kullanabilirim? – DrDee

İlgili konular