SORU
13 Aralık 2009, Pazar


Çalışan tipik test dizin yapısı ile unittest

Hatta basit bir Python modülü için çok sık kullanılan dizin yapısı test kendi dizine: birim testleri ayrı gibi görünüyor

new_project/
    antigravity/
        antigravity.py
    test/
        test_antigravity.py
    setup.py
    etc.

örneğin bakın bu Python project howto.

Benim sorum sadeceAslında bu testleri çalışan her zamanki yolu nedir?Bu benim dışımda herkesin çok iyi olduğunu düşünüyorum, ama sadece import antigravity modül yolunda değil gibi başarısız olacak gibi sınama dizininden python test_antigravity.py kaçamazsın.

Ben anlamam değiştirmek DEYİM ve diğer arama yolu ile ilgili hileler, ama ben inanmıyorum. en basit yolu - sorun değil eğer geliştirici ama gerçekçi tahmin kullanıcılarınız için kullanmak istiyorlar kontrol etmek için testler geçiyor.

Diğer alternatif sadece diğer dizine test dosya kopyalamak için, ama biraz aptal gibi görünüyor ve başlangıç için ayrı bir dizinde onlara sahip nokta özlüyor.

Eğer sadece yeni projem için kaynak indirilmiş olsaydı nasıl birim test yapar mısın? Benim kullanıcılar için diyelim ki bir cevabı tercih ederdim: "birim testler yapmak X."

CEVAP
17 HAZİRAN 2014, Salı


En iyi çözüm bence kullanmaktır unittest command line interface hangi ekler dizini sys.path o yüzden gerek yok (bitti TestLoader sınıf).

Bir dizin yapısı için örneğin bunun gibi:

new_project
├── antigravity.py
└── test_antigravity.py

Sadece çalıştırabilirsiniz:

$ cd new_project
$ python -m unittest test_antigravity

Seninki gibi: bir dizin yapısı için

new_project
├── antigravity
│   ├── __init__.py         # make it a package
│   └── antigravity.py
└── test
    ├── __init__.py         # also make test a package
    └── test_antigravity.py

test paket içinde test modülleri içinde, antigravity paket ve modülleri her zamanki gibi alabilirsiniz:

# import the package
import antigravity

# import the antigravity module
from antigravity import antigravity

# or an object inside the antigravity module
from antigravity.antigravity import my_object

Tek bir test modülü çalışan:

Tek bir test modülü çalıştırmak için, bu durumda test_antigravity.py:

$ cd new_project
$ python -m unittest test.test_antigravity

Sadece referans test alma aynı şekilde modül.

Tek bir test çalışması veya test yöntemi çalışan:

Ayrıca TestCase tek ya da tek bir test yöntemi çalıştırabilirsiniz:

$ python -m unittest test.test_antigravity.GravityTestCase
$ python -m unittest test.test_antigravity.GravityTestCase.test_method

Tüm testler:

Ayrıca test discovery hangi keşfetmek ve çalıştırmak tüm testler için, onlar olmalı modülleri veya paketleri adlı test*.py (değiştirilebilir ile -p, --pattern bayrak):

$ cd new_project
$ python -m unittest discover

Bu test paket içinde test*.py bütün modüller çalışır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Lupe Fiasco

    Lupe Fiasco

    23 ŞUBAT 2006
  • Titan Lee Hai

    Titan Lee Ha

    14 Temmuz 2008
  • Vagrant Records

    Vagrant Reco

    8 Mayıs 2006