Встречается на собеседованиях • сегодня
Как протестировать миграцию
Для тестирования миграции в Django можно использовать следующие подходы:
- Тестирование применения миграции:
python
from django.test import TestCase, modify_settings
from django.db.migrations.executor import MigrationExecutor
from django.db import connection
class MigrationTestCase(TestCase):
@property
def app(self):
return 'your_app_name'
migrate_from = None
migrate_to = None
def setUp(self):
executor = MigrationExecutor(connection)
old_apps = executor.loader.project_state(self.migrate_from).apps
executor.migrate(self.migrate_from)
# Сохраняем старое состояние
self.setUpBeforeMigration(old_apps)
# Применяем миграцию
executor = MigrationExecutor(connection)
executor.loader.build_graph()
executor.migrate(self.migrate_to)
self.apps = executor.loader.project_state(self.migrate_to).apps
text
def setUpBeforeMigration(self, apps):
passtext
2. **Проверка обратной миграции**:
```python
def test_reverse_migration(self):
executor = MigrationExecutor(connection)
executor.migrate(self.migrate_to)
executor.migrate(self.migrate_from)- Проверка схемы БД:
python
from django.db import connection
def test_schema_changes(self):
with connection.cursor() as cursor:
cursor.execute("SELECT * FROM your_table")
columns = [col[0] for col in cursor.description]
self.assertIn('new_column', columns)- Тестирование данных:
python
def test_data_migration(self):
OldModel = self.old_apps.get_model('app', 'Model')
NewModel = self.apps.get_model('app', 'Model')
self.assertEqual(NewModel.objects.count(), OldModel.objects.count())Для pytest можно использовать фикстуру django_db_modify_db_settings.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы