Есть ли способ запустить сервер с сессионным соединением с базой данных в Django?
По мере того, как я разрабатываю бэкенд, я также разрабатываю фронтенд. Как вы уже, наверное, догадались, мне приходится выполнять некоторые REST-запросы на моем сервере.
Ну, для этого есть несколько решений. Я могу использовать моки на фронтенде или поддельный JSON-сервер . Однако у этого подхода есть некоторые недостатки:
- Мне приходится переделывать то, что у меня есть на уже существующем бэкенд-сервере.
- Разбираться с аутентификацией на поддельном JSON-сервере не очень удобно.
- Мне придется написать много шаблонов, если я хочу перейти на подход мокинга и модульного тестирования.
Опять же, вся логика, которая мне нужна, уже существует в моем проекте Django, поэтому то, что мне нужно, это:
- Run a dev server.
- Set up a fresh new database.
- Provide some initial data. Some fake users, posts, whatever.
- Do my testing on my frontend project while the server runs.
- Hit the kill signal. (CTRL+C)
- Gracefully drop the database that I have created on step 2.
- Shutdown the program.
Я использую pytest
и pytest-django
. Они делают именно это при настройке тестовой среды, мне интересно, могу ли я сделать это вручную.
Заранее спасибо.
Environment
- Python 3.9
- Django 2.2
Я никогда не использовал такую установку для интеграционного тестирования, но где-то видел ее.
Вы можете выполнить команду django-admin testserver mydata.json
для запуска сервера тестирования с данными из предоставленного фикстура. В примере, который я видел, это было сделано с помощью пользовательской команды Django, где вместо статического фикстура база данных сервера тестирования динамически заполнялась фабриками. Однако я не помню деталей того, как это было реализовано.
После того, как тестовый сервер был готов, были запущены тесты Cypress. Бэкенд и фронтенд были подключены с помощью пакета npm start-server-and-test
..
Приложение с аналогичной настройкой можно посмотреть здесь. Особенно обратите внимание на команду custom testserver, а также на команды cypress.