Модульное тестирование в Django: как инициализировать базу данных
Я пытаюсь сделать Test Driven Development с помощью Django. Моя проблема в том, что мне нужно добавить некоторые вещи в базу данных перед запуском тестов, например, количество пользователей, отделов и их разрешения. Я пытался сделать это с помощью осветителей, но я действительно нахожу весь процесс очень не интуитивно понятным (также я обнаружил, что когда я удалял и повторно синхронизировал свою базу данных, мои приборы пользователей были сломаны, потому что на разрешения ссылались только через идентификатор)!
Я искал другие решения для этой предварительной тестовой инициализации базы данных, но мне удалось найти только очень простые случаи, когда инициализация выполняется в методе setUp класса TestCase. Я на самом деле не думаю, что такие методы можно использовать, когда у вас есть приложение с разными пользователями и разрешениями, которые все должны быть протестированы.
Можете ли вы сказать мне, как вы заполняете свою базу данных, прежде чем начинать тесты для большого приложения? Есть ли лучшие методы, кроме приспособлений и класса setUp?
1 ответ
Фабрики моделей (и такие инструменты, как factory_boy или model_mommy) - лучшая альтернатива.
Согласно слайдам Карла Майера "Тестирование и Джанго", светильники:
- Трудно поддерживать и обновлять.
- Увеличить тест взаимозависимости.
- Медленно загружается.
Лучше использовать модельные фабрики, почему?
- Тестовые данные локальны для тестирования кода (явный).
- Легко поддерживать.
- Не создавайте никаких данных, которые вам не нужны для этого теста.
- Прекрасно работает даже для больших / сложных наборов тестовых данных (вспомогательных функций).
Лично я использовал factory_boy для тестирования почти в каждом проекте django. Стоит попробовать, посмотрите.
Также см: