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
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.
Nasıl python ile dinamik () parametriz...
Nasıl tüm tarayıcılarda birim testleri...
Nasıl Python betiği tek başına HERHANG...
Nasıl birden fazla dosya üzerinde djan...
Nasıl tüm testleri JUnit 4 belirli bir...