2013-08-05 59 views
9

Có bất kỳ khác biệt thời gian chạy-logic giữa hai phương pháp này không? Hoặc bất kỳ khác biệt behviour?
Nếu không, sau đó tôi nên quên khoảng __init__ và chỉ sử dụng setUpClass suy nghĩ ở đây về các lớp hủy bỏ như về không gian tên thay vì ngôn ngữ Mô hình OOP?Khi nào tôi nên sử dụng setUpClass và khi __init__?

Trả lời

11

Hai loại này hoàn toàn khác nhau.

setUpClass là một phương pháp lớp, vì vậy, nó sẽ chỉ cho phép bạn đặt thuộc tính lớp.

Chúng cũng được gọi vào các thời điểm khác nhau. Á hậu thử tạo một phiên bản mới cho mọi thử nghiệm. Nếu bạn kiểm tra lớp có 5 phương pháp thử, 5 trường hợp được tạo và __init__ được gọi là 5 lần.

setUpClass thường được gọi là sau khi. (Nếu bạn xáo trộn trật tự kiểm tra và phương pháp thử từ các lớp khác nhau được xen kẽ, setUpClass có thể được gọi nhiều lần, sử dụng tearDownClass để dọn dẹp đúng cách và điều đó sẽ không thành vấn đề).

Ngoài ra, nhân viên kiểm tra thường tạo tất cả các phiên bản thử nghiệm khi bắt đầu chạy thử nghiệm; điều này thường rẻ, vì các trường hợp thử nghiệm không giữ (nhiều) trạng thái như vậy sẽ không mất nhiều bộ nhớ.

Theo quy tắc chung, bạn nên không sử dụng sử dụng __init__. Sử dụng setUpClass để tạo trạng thái được chia sẻ giữa tất cả các thử nghiệm và sử dụng setUp để tạo trạng thái thử nghiệm. setUp được gọi ngay trước khi chạy thử nghiệm, vì vậy bạn có thể tránh xây dựng nhiều trạng thái bộ nhớ chuyên sâu cho đến khi nó là cần thiết cho một thử nghiệm, và không phải trước đây.

Các vấn đề liên quan