Команда testserver
Команда testserver применяется для запуска легковесного тестового сервера Django, который предварительно загружает указанные фикстуры в тестовую базу данных. Это позволяет разработчикам быстро проверить работу приложения с заранее подготовленными тестовыми данными, не затрагивая основную базу. Команда полезна для отладки, демонстрации функционала или проверки корректности работы интерфейса в изолированной среде.
Основное отличие testserver от стандартной команды runserver заключается в том, что она создает временную тестовую базу данных, загружает в нее указанные фикстуры и запускает сервер. После остановки сервера тестовая база данных удаляется, что гарантирует чистоту эксперимента.
Синтаксис
python manage.py testserver [fixture1 fixture2 ...] [options]
Где fixture1 fixture2 ... - имена файлов фикстур (с расширением .json, .yaml или .xml), которые необходимо загрузить. Если фикстуры не указаны, команда запустит сервер без загрузки данных.
Параметры
Команда поддерживает стандартные опции Django, такие как --noinput для автоматического подтверждения действий, --verbosity для управления уровнем детализации вывода, --settings для указания файла настроек и другие. Также доступны параметры для управления адресом и портом сервера.
Пример . Фикстура
Для работы команды необходимо подготовить файл фикстуры в формате JSON. Рассмотрим пример фикстуры для модели Article:
[
{
"model": "myapp.article",
"pk": 1,
"fields": {
"title": "First article",
"content": "Content of the first article",
"status": "published",
"created_at": "2026-01-01T10:00:00Z"
}
},
{
"model": "myapp.article",
"pk": 2,
"fields": {
"title": "Second article",
"content": "Content of the second article",
"status": "draft",
"created_at": "2026-01-02T12:00:00Z"
}
}
]
Такую фикстуру можно сохранить в файл articles.json в директории fixtures вашего приложения.
Пример . Запуск
Запустим тестовый сервер с загрузкой фикстуры из файла articles.json:
python manage.py testserver articles.json
После выполнения этой команды Django создаст тестовую базу данных, применит все миграции, загрузит данные из фикстуры и запустит сервер. Вывод в консоли будет выглядеть примерно так:
"Creating test database for alias 'default'..."
"Installing custom SQL..."
"Installing indexes..."
"Loaded 2 articles from fixtures."
"Starting development server at http://127.0.0.1:8000/"
"Quit the server with CONTROL-C."
Пример . С несколькими фикстурами
Можно загрузить несколько фикстур, указав их через пробел. Порядок загрузки важен: если фикстуры содержат связанные данные, они должны загружаться в правильном порядке:
python manage.py testserver categories.json articles.json comments.json
Пример . С указанием порта
Команда позволяет указать адрес и порт для запуска сервера, аналогично команде runserver:
python manage.py testserver articles.json 8080
Или с указанием адреса:
python manage.py testserver articles.json 0.0.0.0:9000
Пример . С опцией --noinput
Опция --noinput позволяет автоматически подтвердить все предупреждения без интерактивного ввода. Это полезно при автоматизации:
python manage.py testserver articles.json --noinput
Практический пример
Рассмотрим ситуацию, когда необходимо проверить работу API с тестовыми данными. Создадим фикстуру для модели Category и Article:
[
{
"model": "myapp.category",
"pk": 1,
"fields": {
"name": "Technology",
"slug": "technology"
}
},
{
"model": "myapp.article",
"pk": 1,
"fields": {
"title": "Django testserver guide",
"content": "Full guide about testserver command",
"category": 1,
"status": "published",
"created_at": "2026-09-01T09:00:00Z"
}
}
]
Затем запускаем сервер и проверяем работу приложения:
python manage.py testserver fixtures/initial_data.json --verbosity=2
После запуска можно открыть браузер и перейти на http://127.0.0.1:8000, чтобы увидеть приложение в действии с загруженными тестовыми данными.