2011-04-27 20 views
41

Czy wyłączyć Django South podczas testów jednostkowych? Jak uniknąć uruchamiania wszystkich migracji południowych podczas testowania jednostki django?Czy wyłączyć Django South podczas testów jednostkowych?

+0

Zastanawiam się, dlaczego to się liczy? Przeprowadza te migracje w testowej bazie danych podczas wykonywania testów. Jednak jeśli usuniesz 'south' z INSTALLED_APPS, możesz uniemożliwić przeprowadzenie testów. –

+1

@Torsten Mam przypadek użycia, który wymaga tego: Mam moduł innej firmy, który ma model z ForigenKey do mojej klasy 'User'. Mam jednak niestandardowe pole pk w moim 'User'. Dlatego gdy uruchomię test i przeprowadzona zostanie migracja "0001_initial" dla tego modułu innej firmy, utworzy on ograniczenie w testowej bazie danych z nieprawidłową nazwą pola do tabeli 'user'. Właśnie dlatego muszę wyłączyć migracje, gdy przeprowadzam testowanie jednostek. – OrPo

Odpowiedz

68

Tak, South documentation opisuje, jak to zrobić, ale w zasadzie tylko dodać to do pliku settings.py:

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

Nie spowoduje to wyłączenia migracji z południa, wyświetla jedynie południe, uruchamiając własne zmiany. Zobacz artykuł kiddouck dotyczący wyłączania wszystkich migracji południowych podczas wykonywania testów jednostkowych django. –

+0

Dzięki @ephesian, zostało to naprawione. –

31

Nawet jeśli wybrałeś dobrą odpowiedź, myślę, że należy wziąć pod uwagę zamiast tego opcja SOUTH_TESTS_MIGRATE. Zapobiegnie to uruchomieniu wszystkich migracji w teście db, a następnie uruchomieniu syncdb.

Powiązane problemy