2009-10-16 24 views
16

Tôi đang viết các bài kiểm tra đơn vị cho một phần của một ứng dụng chạy dưới dạng máy chủ HTTP. Cách tiếp cận mà tôi đã cố gắng thực hiện là nhập mô-đun có chứa máy chủ HTTP, khởi động nó. Sau đó, các bài kiểm tra đơn vị sẽ sử dụng urllib2 để kết nối, gửi dữ liệu và kiểm tra phản hồi.Python - Twisted and Unit Tests

Máy chủ HTTP của chúng tôi đang sử dụng Twisted. Một vấn đề ở đây là tôi không quen thuộc với Twisted :)

Bây giờ, tôi khởi tạo máy chủ HTTP và khởi động nó trong phương thức setUp() và sau đó dừng nó trong phương thức tearDown().

Vấn đề là, Twisted không xuất hiện như thế này, và nó sẽ chỉ chạy một bài kiểm tra đơn vị. Sau lần đầu tiên, lò phản ứng sẽ không khởi động nữa.

Tôi đã tìm kiếm và tìm kiếm và tìm kiếm, và tôi dường như không thể tìm thấy câu trả lời hợp lý.

Tôi có đang sử dụng sai phương pháp hoàn toàn hay chỉ thiếu một điều gì đó hiển nhiên?

Trả lời

17

Dưới đây là một số thông tin: Writing tests for Twisted code using Trial

Bạn cũng nên nhìn vào -help của lệnh xét xử. Có rất nhiều thứ tốt trong thử nghiệm! Nhưng nó không phải luôn luôn dễ dàng để làm thử nghiệm trong một ứng dụng không đồng bộ. Chúc may mắn!

7

Tôi tin rằng để thử nghiệm đơn vị trong Twisted bạn phải sử dụng TwistedTrial (đó là thành phần cốt lõi, tức là, đi kèm với tarball xoắn trong thư mục xoắn/dùng thử). Tuy nhiên, như URL tôi đã chỉ ra để nói, doc là chủ yếu là do có một cái nhìn thông qua các nguồn (bao gồm cả nguồn của các dự án xoắn khác nhau, khi họ đang thử nghiệm với thử nghiệm quá).

3

Có một known bug với Xoắn (có thể sẽ không được sửa) khi khởi động lại lò phản ứng gây ra sự cố.

Đây là lý do tại sao các bài kiểm tra đơn vị của bạn không hoạt động.

Cũng như sử dụng Trial bạn có thể muốn xem xét các hệ thống kiểm tra riêng biệt nói chuyện với máy chủ HTTP của bạn như khách hàng sẽ.

  • Webdriver - API để thúc đẩy phiên trình duyệt trên trang web của bạn.
  • TestGen4Web - Plugin Firefox ghi lại tương tác với trang web và có thể phát lại.
4

Như những người khác đã đề cập, bạn nên sử dụng Thử nghiệm cho các bài kiểm tra đơn vị trong Twisted.

Bạn cũng nên thử nghiệm đơn vị từ dưới lên - đó là những gì "đơn vị" trong thử nghiệm đơn vị ngụ ý. Kiểm tra dữ liệu và logic của bạn trước khi bạn kiểm tra giao diện của mình. Đối với giao diện HTTP, bạn nên gọi processGET, processPOST, v.v. với một yêu cầu giả lập, nhưng bạn chỉ nên làm điều này sau khi bạn đã thử nghiệm những gì các phương thức này đang gọi. Mỗi bài kiểm tra nên giả định rằng các đơn vị được kiểm tra ở nơi khác đang làm việc như được thiết kế.

Nếu bạn đang nói HTTP hoặc bạn cần một máy chủ đang chạy hoặc trạng thái khác, có thể bạn đang thực hiện các bài kiểm tra cấp cao hơn như kiểm tra chức năng hoặc tích hợp. Đây không phải là điều xấu, nhưng bạn có thể muốn thuật lại câu hỏi của mình.

+0

Bạn biết tôi nghĩ bạn đúng.Thành thật mà nói, tất cả những gì tôi cần làm để kiểm tra đơn vị cấp thấp hơn là giả mạo đối tượng "yêu cầu" (một số hàm sử dụng khá nhiều). – Dave

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