2009-03-28 35 views
11

Tôi đang viết chế độ xem, không quá quan tâm để viết mẫu ngay lập tức.Cách mô phỏng yêu cầu HTTP Post từ chế độ xem django mà không cần mẫu

Nhưng tôi cần kiểm tra chương trình của mình bằng cách gửi yêu cầu bài đăng.

Làm thế nào để tôi mô phỏng HTTP bài từ bên trong một cái nhìn django

Tôi biết rằng urllib2 và httplib module của python cho phép nhiều lựa chọn, nhưng tôi đang tìm kiếm cái gì đó thanh lịch tích hợp vào các quan điểm django.

U có tạo phương thức thực hiện bài đăng, bạn sẽ gọi nó ở đâu?

Cập nhật: Một số câu trả lời liên quan đến thử nghiệm bằng cách gửi POST tới ứng dụng của tôi. Điều gì sẽ xảy ra nếu tôi muốn POST tới dịch vụ bên ngoài và xử lý phản hồi POST. Làm thế nào tôi có thể làm điều đó mà không cần viết mẫu.

+0

Chính xác những gì tôi cũng đang tìm kiếm ... Bất kỳ ai cũng có ý tưởng? – Sebastian

Trả lời

11

Django được tích hợp sẵn trong mock Client utility có thể bắt chước các yêu cầu như thể chúng đến từ trình duyệt. Nếu bạn không cần bắt chước hoàn toàn trình duyệt và chỉ muốn gọi trực tiếp chế độ xem của mình từ các thử nghiệm, hãy cân nhắc sử dụng RequestFactory để thay thế.

1

Có vẻ như bạn đang tìm kiếm một bài kiểm tra đơn vị hoặc bài kiểm tra chấp nhận. Hãy xem unittest là một phần của thư viện chuẩn.

Để thử nghiệm nhanh chóng trong khi phát triển các ứng dụng web, tôi thích sử dụng curl. Đó là một công cụ dòng lệnh đơn giản, dễ dàng tạo ra tất cả các loại yêu cầu HTTP. Bạn có thể POST bằng một lệnh như:

curl -i -d field=value http://localhost:8080/sample/something 

Curl có sẵn trên nhiều nền tảng. Kiểm tra xem nó ra tại http://curl.haxx.se/

1

Nếu bạn đang xem xét điều này từ ngữ cảnh ghi unittests, bạn có thể xem xét việc tạo đối tượng Yêu cầu chính mình và chỉ cần gọi hàm xem trực tiếp. Bạn thậm chí có thể thử nó, và bất kỳ các thông số khác xem có thể mất.

2

Để tránh sự đau đớn của việc tạo ra các yêu cầu đối tượng bản thân bạn có thể sử dụng mẹo này trên Django snippets

3

Đối với những trường hợp này tôi nghĩ RequestFactory là lý tưởng phù hợp.

Nó hoạt động giống như khách hàng thử nghiệm của django với sự khác biệt mà nó cho phép bạn tạo ra một đối tượng yêu cầu mà bạn có thể sử dụng bất cứ nơi nào. Vì vậy, bạn chỉ có thể tạo đối tượng yêu cầu của riêng bạn và chuyển nó cho chế độ xem hoặc biểu mẫu của bạn để thử nghiệm.

Tôi thích phương pháp thử nghiệm này nhiều hơn sau đó sử dụng ứng dụng thử nghiệm, vì nó đến gần hơn với thử nghiệm đơn vị pure. Đó là, thử nghiệm một đoạn mã duy nhất. Nếu bạn đang sử dụng ứng dụng khách thử nghiệm, có nhiều lớp được thêm trước khi mã thực tế bạn đang thử nghiệm được tiếp cận.

+0

Tài liệu trên RequestFactory đã chuyển sang https://docs.djangoproject.com/en/dev/topics/testing/advanced/#django. test.RequestFactory – shacker

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