SORU
13 Kasım 2009, Cuma


nasıl bir dizindeki tüm Python birim testleri çalıştırmak için

Python da benim birim testi içeren bir dizin var. Her birim test modülü form "test_*.". py Bir dosya "all_test.py" bu, tahmin ettiğiniz gibi, söz konusu test şeklinde tüm dosyaları çalıştırmak ve sonucu döndürür. denilen yapmaya çalışıyorum Şimdiye kadar iki yöntemi denedim, her ikisi de başarısız oldu, iki yöntem göstereceğim, ve orada birisi aslında bu doğru bir şekilde nasıl yapılacağını bilir umarım. Teşekkür ederim.

Yiğit ilk denemem için, düşündüm Eğer ben sadece tüm benim test alma "dosyasında modülleri, ve daha sonra bu unittest arayın.() ana biblo,, değil mi?" O zaman yanlış çıkıyor.

import glob
import unittest

testSuite = unittest.TestSuite()
test_file_strings = glob.glob('test_*.py')
module_strings = [str[0:len(str)-3] for str in test_file_strings]

if __name__ == "__main__":
     unittest.main()

Bu bende işe yaramadı.

$ python all_test.py 

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK

Tamam, belki de bir daha bütün bu test işi "" moda. manuel yapmaya çalışacağız ama ikinci denememde için Aşağıda yapmaya çalıştım.

import glob
import unittest

testSuite = unittest.TestSuite()
test_file_strings = glob.glob('test_*.py')
module_strings = [str[0:len(str)-3] for str in test_file_strings]
[__import__(str) for str in module_strings]
suites = [unittest.TestLoader().loadTestsFromName(str) for str in module_strings]
[testSuite.addTest(suite) for suite in suites]
print testSuite 

result = unittest.TestResult()
testSuite.run(result)
print result

#Ok, at this point, I have a result, how do I display it as the normal unit test
#command line output?
if __name__ == "__main__":
    unittest.main()

Bu da işe yaramadı, ama çok yakın gibi görünüyor!

$ python all_test.py 
<unittest.TestSuite tests=[<unittest.TestSuite tests=[<unittest.TestSuite tests=[<test_main.TestMain testMethod=test_respondes_to_get>]>]>]>
<unittest.TestResult run=1 errors=0 failures=0>

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK

Yakın gibi geliyor. Bir çeşit takım elbise var gibi, ve sonuç idam edebilirim. Sadece var diyor gerçeği hakkında biraz endişe duyuyorum "=1 koş" bu olması gerektiği gibi görünüyor "=2 run", ama ilerleme. Ama nasıl ve ana sonucu geçiş görüntülerim? Ya nasıl yani temelde sadece bu dosyayı çalıştırabilirsiniz, ve bunu yaparken, bu dizindeki tüm birim testi çalışma alabilirim?

CEVAP
26 Mart 2013, Salı


Python 2.7 ve üstü ile yeni bir kod yazmak veya üçüncü taraf araçlar bunu yapmak için kullanmak zorunda değilsiniz, komut satırı üzerinden özyinelemeli test infaz edilmiştir.

python -m unittest discover <test_directory>
# or
python -m unittest discover -s <directory> -p '*_test.py'

python 2.7Daha fazla bilgi edinebilirsiniz veya python 3.x unittest belgeler.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dogbert files

    Dogbert file

    12 Ocak 2012
  • Karan Thakur

    Karan Thakur

    23 HAZİRAN 2010
  • spyib

    spyib

    9 Ocak 2007