2010-06-28 34 views
14

Chạy thử nghiệm đơn vị Django là đến nay quá chậm. Đặc biệt là khi tôi chỉ muốn chạy một bài kiểm tra nhưng nhân viên thử nghiệm muốn tạo toàn bộ cơ sở dữ liệu và phá hủy toàn bộ điều chỉ cho một bài kiểm tra đó.Làm thế nào để tôi nói với Django để lưu cơ sở dữ liệu thử nghiệm của tôi?

Trong trường hợp tôi không thay đổi bất kỳ mô hình nào, tôi có thể tiết kiệm thời gian nếu Django không bận tâm cố gắng tạo và hủy toàn bộ cơ sở dữ liệu, thay vào đó lưu nó vào lần sau. Tốt hơn, nó sẽ là tuyệt vời nếu các Á hậu thử nghiệm có khả năng để có thể xem những mô hình đã thay đổi và chỉ thay thế những người trước khi chạy thử nghiệm.

Tôi không muốn phân lớp bản thân người thử nghiệm, nhưng đó là những gì tôi sẽ phải làm nếu tôi không tìm được giải pháp sớm. có bất cứ điều gì như thế này đã tồn tại?

Trả lời

8

Trong django1.8 thêm tham số mới cho manage.py test lệnh --keepdb

./manage.py test --keepdb 
4

Bạn đã thử sử dụng cơ sở dữ liệu SQLite trong bộ nhớ để kiểm tra? Nó nhanh hơn nhiều so với sử dụng cơ sở dữ liệu dựa trên đĩa.

+0

Thời gian qua tôi đã cố gắng, spatialite đã không chơi độc đáo trên bất kỳ phiên bản của ubuntu Tôi đã sử dụng, vì vậy tôi nhanh chóng bị bỏ rơi cái đó. Tôi nên thử lại lần nữa. –

+3

Tôi nghĩ rằng nó là cần thiết để chạy các bài kiểm tra trên cùng một cơ sở dữ liệu, như bạn sử dụng trong sống, nếu không phải lúc nào, ít nhất là trước mỗi cam kết. –

+0

Chú ý: SQLite3 hiện KHÔNG hoạt động đa luồng, vì vậy nếu bạn có bất kỳ thử nghiệm (tích hợp) nào dựa vào/kiểm tra truy cập đồng thời vào DB, chúng sẽ gây đau buồn. – JohnJ

1

Tôi đang sử dụng Đăng-mũi. Nếu bạn đặt một env var REUSE_DB = 1, nó sẽ không phá hủy DB sau khi chạy thử nghiệm và tái sử dụng cùng một DB cho lần chạy tiếp theo. Bất cứ khi nào lược đồ của bạn thay đổi, chỉ cần đặt REUSE_DB = 0 và thực hiện một lần chạy 'đầy đủ'. Sau đó thiết lập lại nó đến 1 và bạn tốt để đi.

https://github.com/django-nose/django-nose

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