Benim Python birim testleri içeren bir dizin var. Her birim test modülü _ *. Py form testindedir . Ben , tahmin ettiğiniz gibi, yukarıda belirtilen test formundaki tüm dosyaları çalıştırmak ve sonucu döndürecek all_test.py adlı bir dosya yapmaya çalışıyorum . Şimdiye kadar iki yöntem denedim; ikisi de başarısız oldu. İki yöntemi göstereceğim ve umarım dışarıdaki biri bunu nasıl doğru yapacağını bilir.
İlk cesur girişimim için, "Tüm test modüllerimi sadece dosyaya unittest.main()
aktarır ve sonra bu doodad'ı çağırırsam, işe yarayacak, değil mi?" Diye düşündüm. Görünüşe göre yanılmışı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]
if __name__ == "__main__":
unittest.main()
Bu işe yaramadı, elde ettiğim sonuç:
$ python all_test.py
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
İkinci denemem için, tamam, belki de tüm bu test işlemini daha "manuel" bir şekilde yapmaya çalışacağım. Bu yüzden 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 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
Bir çeşit paketim var ve sonucu yürütebilirim. Sadece sahip olduğumu söylemesi gerçeğiyle ilgili biraz endişeliyim, olması run=1
gerektiği gibi görünüyor run=2
, ancak ilerleme. Ama sonucu anaya nasıl iletirim? Ya da sadece bu dosyayı çalıştırabilmem için nasıl çalıştırabilirim ve bunu yaparken, bu dizindeki tüm birim testlerini çalıştırabilir miyim?