Tôi có một thư mục chứa các bài kiểm tra đơn vị Python của tôi. Mỗi mô-đun kiểm tra đơn vị có dạng thử nghiệm _ *. Py . Tôi đang cố gắng tạo một tệp có tên all_test.py , bạn sẽ đoán nó, chạy tất cả các tệp trong mẫu thử nghiệm đã nói ở trên và trả về kết quả. Tôi đã thử hai phương pháp cho đến nay; Cả hai đều thất bại. Tôi sẽ chỉ ra hai phương pháp và tôi hy vọng ai đó ngoài kia biết cách thực sự làm điều này một cách chính xác.
Đối với nỗ lực dũng cảm đầu tiên của tôi, tôi nghĩ rằng "Nếu tôi chỉ nhập tất cả các mô-đun thử nghiệm của mình vào tệp, sau đó gọi hình tượng trưng này unittest.main()
, nó sẽ hoạt động, phải không?" Chà, hóa ra tôi đã sai.
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()
Điều này đã không làm việc, kết quả tôi nhận được là:
$ python all_test.py
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
Đối với lần thử thứ hai, tôi nghĩ, ok, có lẽ tôi sẽ cố gắng thực hiện toàn bộ việc thử nghiệm này theo cách "thủ công" hơn. Vì vậy, tôi đã cố gắng làm điều đó dưới đây:
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()
Điều này cũng không hoạt động, nhưng nó có vẻ rất gần!
$ 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
Tôi dường như có một bộ phần nào đó, và tôi có thể thực hiện kết quả. Tôi có một chút lo ngại về thực tế rằng nó nói rằng tôi chỉ có run=1
, có vẻ như điều đó nên run=2
, nhưng đó là sự tiến bộ. Nhưng làm thế nào để tôi vượt qua và hiển thị kết quả thành chính? Hoặc về cơ bản làm thế nào để nó hoạt động để tôi có thể chạy tệp này và khi làm như vậy, hãy chạy tất cả các bài kiểm tra đơn vị trong thư mục này?