2012-10-19 26 views
8

Tôi đang làm việc trên một ứng dụng Django. Chúng tôi đang sử dụng cần tây để xếp hàng ghi vào cơ sở dữ liệu Mongo của chúng tôi. Tôi đang cố gắng viết một bài kiểm tra chức năng (sử dụng Selenium) cho một hàm xếp hàng gì đó trong cần tây.Làm thế nào để tôi có được cần tây django để viết vào cơ sở dữ liệu thử nghiệm cho các bài kiểm tra chức năng của tôi?

Vấn đề là cần tây ghi vào cơ sở dữ liệu Mongo chính thay vì cơ sở dữ liệu thử nghiệm. Làm thế nào tôi có thể thiết lập các bài kiểm tra chức năng của tôi để làm việc với một thể hiện cần tây viết cho cơ sở dữ liệu thử nghiệm?

Chúng tôi đang sử dụng 'django_nose.NoseTestSuiteRunner' làm TEST_RUNNER.

CẬP NHẬT:

tôi đã không thể tìm ra cách để sử dụng một thể hiện của cần tây cho các bài kiểm tra, nhưng tôi đã tìm ra cách để vượt qua cần tây cho các bài kiểm tra chức năng.

Trong settings.py tôi:

FUNC_TEST_COMMAND=['functional'] 
func_test_command = filter(lambda element: element in FUNC_TEST_COMMAND, sys.argv) 
if len(func_test_command) > 0: 
    CELERY_ALWAYS_EAGER = True 

này bắt chước hành vi của một AsyncResult mà không gửi bất cứ điều gì thông qua một hàng đợi thông điệp khi chạy bộ ứng dụng thử nghiệm chức năng. (Xem http://celery.readthedocs.org/en/2.4/configuration.html#celery-always-eager để biết thêm thông tin.)

Giải pháp này có lẽ không lý tưởng cho các thử nghiệm chức năng, vì nó cắt ra một trong các lớp ứng dụng.

Trả lời

0

Tôi khuyên bạn nên xem LiveServerTestCase nếu bạn sử dụng ứng dụng khách thử nghiệm tự động để chạy thử nghiệm chức năng.

Sau đó, hãy đảm bảo bạn có mô-đun cài đặt riêng để chạy thử nghiệm với cấu hình đúng để Celery sử dụng project's database for transport của bạn.

1

Sử dụng CELERY_ALWAYS_EAGER = True thực sự vượt qua quá trình xử lý asynchornous của Celery. Để ghi vào cơ sở dữ liệu thử nghiệm, bạn sẽ cần bắt đầu công nhân celeryd của bạn bằng cách sử dụng các thiết lập kết nối đến cơ sở dữ liệu thử nghiệm.

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