Django 1.7 introduziu migrações de banco de dados .
Ao executar os testes de unidade no Django 1.7, ele força uma migração , que leva muito tempo. Então, eu gostaria de pular as migrações do django e criar o banco de dados no estado final.
Sei que ignorar as migrações pode ser uma prática ruim, pois essa parte do código não seria testada. Mas não é o caso: estou executando as migrações completas no servidor de teste CI (jenkins). Eu só quero pular as migrações em meus testes locais, onde a velocidade é importante.
Algum contexto:
Até o Django 1.6 , ao usar South, eu usava a configuração SOUTH_TESTS_MIGRATE :
Por padrão, o comando syncdb do South também aplicará migrações se for executado no modo não interativo, o que inclui quando você estiver executando testes - ele executará todas as migrações sempre que você executar seus testes.
Se você deseja que o executor de teste use syncdb em vez de migrar - por exemplo, se suas migrações estão demorando muito para serem aplicadas - simplesmente defina SOUTH_TESTS_MIGRATE = False em settings.py.
No entanto, o syncdb não existe mais, agora é migrar .
E a partir do Django 1.8 , usarei o parâmetro --keepdb :
A opção --keepdb pode ser usada para preservar o banco de dados de teste entre execuções de teste. Isso tem a vantagem de ignorar as ações de criação e destruição, o que diminui muito o tempo de execução dos testes, especialmente aqueles em um grande conjunto de testes. Se o banco de dados de teste não existir, ele será criado na primeira execução e, em seguida, preservado para cada execução subsequente. Todas as migrações não aplicadas também serão aplicadas ao banco de dados de teste antes de executar o conjunto de testes.
Portanto, esta questão está limitada ao Django 1.7.
django-test-without-migrations
pacote tem sido muito útil para mim, você pode alterar a resposta aceita para stackoverflow.com/a/28993456/200224