Tôi đang phát triển một mô-đun Python với một số tệp nguồn, mỗi tệp có lớp thử nghiệm riêng của nó bắt nguồn từ unittest ngay trong nguồn. Hãy xem xét các cấu trúc thư mục:Python: Cách chạy unittest.main() cho tất cả các tệp nguồn trong thư mục con?
dirFoo\
test.py
dirBar\
__init__.py
Foo.py
Bar.py
Để kiểm tra hoặc Foo.py hoặc Bar.py, tôi sẽ thêm này vào cuối của file nguồn Foo.py và Bar.py:
if __name__ == "__main__":
unittest.main()
Và chạy Python trên một trong hai nguồn, tức là
$ python Foo.py
...........
----------------------------------------------------------------------
Ran 11 tests in 2.314s
OK
Lý tưởng nhất, tôi sẽ phải "test.py" Automagically tìm dirBar cho bất kỳ lớp học có nguồn gốc unittest và làm cho một cuộc gọi đến "unittest.main()". Cách tốt nhất để làm điều này trong thực tế là gì?
Tôi đã thử sử dụng Python để gọi execfile cho mọi tệp * .py trong dirBar, chạy một lần cho tệp .py đầu tiên được tìm thấy & thoát khỏi test.py đang gọi, sau đó tôi phải sao chép mã của mình bằng cách thêm unittest. main() trong mọi tệp nguồn - vi phạm nguyên tắc DRY.
Hoặc bạn đã bỏ lỡ 'dirBar/__ init __. Py' hoặc 'từ dirBar nhập khẩu *' sẽ không hoạt động. btw, sử dụng chữ thường cho tên gói/mô-đun. – jfs
Ngoài ra, vấn đề với điều này là bạn giả sử các trường hợp thử nghiệm của Foo.py và Bar.py được hiển thị trong mô-đun dirBar __init__.py. Nếu không, test.py của bạn sẽ không kiểm tra bất cứ điều gì. – cdleary
không hoạt động cho đến nay, xin vui lòng cập nhật nó –