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?
Odpowiedz
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
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. –
Dzięki @ephesian, zostało to naprawione. –
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
.
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. –
@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