2011-11-07 22 views
9

Tôi có dự án python điển hình cấu trúc tập tin sauLàm thế nào để tổ chức và unittests chạy và kiểm tra chức năng riêng biệt sử dụng nosetests

packageA 
    +----subpackage1 
      +----classa.py 
    +----subpackage2 
      +----classb.py 
    +----test 
      +----subpackage1 
        +----classa_test.py 
      +----subpackage2 
        +----classb_test.py 

Tôi hiện đang cố gắng tổ chức unittests tôi và kiểm tra chức năng vì vậy tôi có thể chạy unittests và functional tests riêng biệt bằng cách sử dụng mũi nhưng cũng có tùy chọn để chạy tất cả các bài kiểm tra. Các bài kiểm tra sẽ tồn tại trong packageA/test/subpackage1 và packageA/test/subpackage2.

  • Cách tốt nhất để tổ chức các thử nghiệm khác nhau là gì? Theo thư mục (chức năng/vs đơn vị /)? Bằng cách đặt tên quy ước của lớp thử nghiệm (ClassATest vs ClassAFunctionalTest)? hoặc bằng cách đặt tên quy ước của phương pháp thử nghiệm (classa_foo_test vs classa_bar_functional_test)?
  • Ai đó có thể giải thích cách kết hợp regex của nosetests hoạt động? Các tùy chọn -m, -i và -e dường như không chạy như tôi mong đợi để chạy. Liệu regex có khớp các thư mục (subpackage1), các tệp (classa_test) hoặc các lớp kiểm tra (ClassATest) hoặc các phương thức kiểm tra (classa_foo_test) không? Tôi vô cùng bối rối

Trả lời

7

cấu trúc kiểm tra thư mục My trông theo cách này:

root 
    + --- tests 
    |  + --- unit_tests 
    |  |   + --- some_app_tests 
    |  |   + --- another_app_tests 
    |  |   | run_tests.py 
    |  | 
    |  + --- integrate_tests 
    |     + --- some_app_tests 
    |     + --- another_app_tests 
    |     | run_tests.py 
    |  
    + --- project_root 
      + --- some_app 
      + --- another_app 

Đối với mỗi ứng dụng cá nhân tôi có thể tạo coresponding thư mục với các bài kiểm tra trong thư mục unit- và integrate-. Mỗi thư mục là dự án django riêng biệt với các thiết lập tùy chỉnh và có lệnh quản lý được sử dụng để chạy thử nghiệm.

Việc đặt thử nghiệm trong một thư mục có một lợi thế tốt đẹp - khi dự án được triển khai, không có lý do để triển khai thử nghiệm với nó. Vì vậy, tôi chỉ xóa một thư mục và đó là tất cả.

(để chạy thử nghiệm tôi sử dụng django-lành mạnh-thử nghiệm: https://github.com/Almad/django-sane-testing)

+0

Bạn nói "Mỗi thư mục là dự án django riêng biệt với cài đặt tùy chỉnh và có lệnh quản lý được sử dụng để chạy thử nghiệm" nhưng cây của bạn không thực sự hiển thị điều này. Ngoài ra, lệnh quản lý tùy chỉnh bạn đang sử dụng là gì? – supervacuo

+0

@supervacuo Tôi không nói ** lệnh quản lý tùy chỉnh **, nhưng lệnh quản lý có ** cài đặt tùy chỉnh **. Các thử nghiệm được chạy bởi thử nghiệm django-sane thông qua lệnh 'manage.py test' (với một số sửa đổi trong cài đặt, được bao bọc trong' run_tests.py', xem DST doc - http://django-sane-testing.readthedocs.org/ vi/latest/usage.html # running-tests) – yedpodtrzitko

+0

OK, đủ công bằng. – supervacuo

-2

Tôi sẽ cố gắng tổ chức thử nghiệm theo khu vực chức năng. Tôi thực sự không biết mũi là gì. Nhưng nếu bạn ví dụ thử nghiệm một khu vực đăng nhập cho một trang web sau đó tạo một thư mục con được gọi là "đăng nhập" hoặc "loginTests", và để kiểm tra trình đơn tạo ra một "menu" hoặc "menuTests" thư mục. Nó luôn luôn là tốt để có quy ước đặt tên tốt là tốt, do đó, tên kiểm tra và thư mục chính xác những gì họ đang thử nghiệm. Hãy cụ thể như bạn có thể.

1

Nếu bạn đang phát triển dự án Django, bạn có thể thử thư viện này: unclebob https://github.com/gabrielfalcao/unclebob

Nó đề xuất một cách làm thế nào để tổ chức và chạy các bài kiểm tra đơn vị và các bài kiểm tra chức năng của bạn.

+0

+1 Tôi chưa từng thấy 'unclebob' trước đây, nhưng có vẻ như là một cách hay để khuyến khích thực hành thử nghiệm tốt (tôi đặc biệt thích "nếu bạn chỉ chạy thử nghiệm đơn vị, thì unclebob sẽ KHÔNG thiết lập cơ sở dữ liệu thử nghiệm") và thậm chí nó được cập nhật khá gần đây. – supervacuo