Saya memiliki direktori yang berisi tes unit Python saya. Setiap modul tes unit berbentuk tes _ *. Py . Saya mencoba membuat file bernama all_test.py yang akan, Anda dapat menebaknya, menjalankan semua file dalam formulir tes yang disebutkan di atas dan mengembalikan hasilnya. Saya telah mencoba dua metode sejauh ini; keduanya gagal. Saya akan menunjukkan dua metode, dan saya berharap seseorang di luar sana tahu bagaimana sebenarnya melakukan ini dengan benar.
Untuk upaya pertama saya yang berani, saya berpikir "Jika saya hanya mengimpor semua modul pengujian saya di file, dan kemudian memanggil barang ini unittest.main()
, itu akan berhasil, kan?" Ya, ternyata saya salah.
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()
Ini tidak berhasil, hasil yang saya dapatkan adalah:
$ python all_test.py
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
Untuk percobaan kedua saya, saya kira, oke, mungkin saya akan mencoba melakukan pengujian keseluruhan ini dengan cara yang lebih "manual". Jadi saya mencoba melakukan itu di bawah ini:
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()
Ini juga tidak berhasil, tetapi tampaknya sangat dekat!
$ 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
Saya sepertinya memiliki beberapa suite, dan saya dapat menjalankan hasilnya. Saya sedikit khawatir tentang fakta bahwa ia mengatakan hanya saya run=1
, sepertinya memang seharusnya begitu run=2
, tetapi ini adalah kemajuan. Tetapi bagaimana saya meneruskan dan menampilkan hasilnya ke main? Atau bagaimana saya membuatnya pada dasarnya bekerja sehingga saya bisa menjalankan file ini, dan dengan demikian, jalankan semua tes unit dalam direktori ini?