2011-04-27 31 views
41

Vô hiệu hóa Django South khi chạy thử nghiệm đơn vị? Làm thế nào để bạn tránh chạy tất cả các di cư phía nam khi làm thử nghiệm đơn vị django?Vô hiệu hóa Django South khi chạy thử nghiệm đơn vị?

+0

Tôi tự hỏi tại sao điều này lại quan trọng? Nó đang chạy di chuyển này trên một cơ sở dữ liệu thử nghiệm khi thực hiện kiểm tra. Mặc dù nếu bạn xóa 'south' khỏi INSTALLED_APPS, bạn có thể ngăn không cho chạy thử nghiệm của nó. –

+1

@Torsten Tôi có một trường hợp sử dụng yêu cầu điều này: Tôi có một mô-đun bên thứ 3 có một mô hình với ForigenKey để lớp 'User' của tôi. Tuy nhiên, tôi có một trường tùy chỉnh pk trong 'User' của tôi. Do đó, khi tôi chạy thử nghiệm và di chuyển '0001_initial' cho mô-đun bên thứ ba này chạy, nó tạo ra một hạn chế trong cơ sở dữ liệu thử nghiệm với tên trường sai đối với bảng' user'. Đây là lý do tại sao tôi cần phải tắt di chuyển khi chạy thử nghiệm đơn vị. – OrPo

Trả lời

68

Vâng, South documentation mô tả làm thế nào để làm điều đó, nhưng về cơ bản chỉ cần thêm này để tập settings.py của bạn:

SOUTH_TESTS_MIGRATE = False # To disable migrations and use syncdb instead 
SKIP_SOUTH_TESTS = True # To disable South's own unit tests 
+0

Điều này sẽ không vô hiệu hóa ở phía nam khi chạy di chuyển, nó chỉ xuất hiện ở phía nam khi chạy các khoản thu nhập của chính nó. Xem bài viết của kiddouck về cách vô hiệu hóa tất cả các di cư phía nam khi làm thử nghiệm đơn vị django. –

+0

Thanks @ephesian, nó đã được sửa. –

31

Mặc dù, bạn đã chọn câu trả lời tốt, tôi nghĩ rằng bạn nên xem xét tùy chọn SOUTH_TESTS_MIGRATE thay thế. Nó sẽ ngăn chặn để chạy tất cả các di chuyển trên db thử nghiệm của bạn, và chạy syncdb thay thế.

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