Django 1.7 wprowadziło migracje baz danych .
Podczas uruchamiania testów jednostkowych w Django 1.7 wymusza migrację , która zajmuje dużo czasu. Chciałbym więc pominąć migracje django i stworzyć bazę danych w ostatecznym stanie.
Wiem, że ignorowanie migracji może być złą praktyką, ponieważ ta część kodu nie zostanie przetestowana. Ale tak nie jest: przeprowadzam pełne migracje na serwerze testowym CI (jenkins). Chcę tylko pominąć migracje w moich lokalnych testach, w których liczy się szybkość.
Pewien kontekst:
Aż do Django 1.6 , kiedy używałem South, używałem ustawienia SOUTH_TESTS_MIGRATE :
Domyślnie polecenie syncdb języka South również zastosuje migracje, jeśli jest uruchomione w trybie nieinteraktywnym, co obejmuje również przeprowadzanie testów - będzie uruchamiane przy każdej migracji za każdym razem, gdy uruchomisz testy.
Jeśli chcesz, aby moduł uruchamiający testy używał syncdb zamiast migracji - na przykład, jeśli migracja trwa zbyt długo - po prostu ustaw SOUTH_TESTS_MIGRATE = False w settings.py.
Jednak syncdb już nie istnieje, teraz jest migrowany .
I od Django 1.8 Użyję --keepdb parametr:
Opcji --keepdb można użyć do zachowania testowej bazy danych między przebiegami testów. Ma to tę zaletę, że pomija zarówno akcje tworzenia, jak i niszczenia, co znacznie skraca czas uruchamiania testów, szczególnie tych w dużym zestawie testów. Jeśli testowa baza danych nie istnieje, zostanie utworzona przy pierwszym uruchomieniu, a następnie zachowana przy każdym kolejnym uruchomieniu. Wszelkie niezastosowane migracje zostaną również zastosowane do testowej bazy danych przed uruchomieniem zestawu testów.
Więc to pytanie ogranicza się do Django 1.7.
django-test-without-migrations
Pakiet był bardzo przydatne dla mnie, może chcesz zmienić zaakceptowanej odpowiedzi stackoverflow.com/a/28993456/200224