Moje Django aplikacja działa z tabel, które nie są zarządzane i mają następujące zdefiniowane w moim modelu tak:przebiegu testy z niezarządzani tabel w Django
class Meta:
managed = False
db_table = 'mytable'
Kiedy uruchomić prosty test, który importuje osobą, się, co następuje:
(person)[email protected] ~/person/dapi $ > python manage.py test
Creating test database for alias 'default'...
DatabaseError: (1060, "Duplicate column name 'db_Om_no'")
tests.py jest dość prosta tak:
import person.management.commands.dorecall
from person.models import Person
from django.test import TestCase
import pdb
class EmailSendTests(TestCase):
def test_send_email(self):
person = Person.objects.all()[0]
Command.send_email()
czytałem w django docs, gdzie jest napisane: "W przypadku testów obejmujących modele z managed = False, to od Ciebie zależy, czy w ramach konfiguracji testu zostaną utworzone prawidłowe tabele.". Rozumiem, że moim problemem jest to, że nie utworzyłem odpowiednich tabel. Więc mam utworzyć kopię tabel w db test_person
, które utworzono ramy testowe?
Za każdym razem, gdy przeprowadzam testy, db zostaje zniszczony (jak sądzę) i ponownie skonfigurowany, więc w jaki sposób mam utworzyć kopię tabel w test_person
. Czy ja myślę o tym dobrze?
Aktualizacja:
Widziałem this question on SO i dodaje ManagedModelTestRunner()
w utils.py
. Mimo że ManagedModelTestRunner()
zostaje uruchomiony (potwierdzony przez wstawienie pbd.set_trace()
), nadal pojawia się błąd Duplicate column name
. Nie dostaję błędów, gdy robię python manage.py syncdb
(choć to może nie oznaczać wiele, ponieważ tabele są już utworzone - spróbuję usunąć tabelę i ponownie uruchomić syncdb, aby zobaczyć, czy mogę uzyskać jakieś wskazówki).
Wiem, że ten post jest stary, ale mam nadzieję, że to pomoże komuś. – rgilligan
Lifesaver. Wielkie dzięki. Praca ze starszą bazą danych w Django to PITA. – khajvah