Есть ли способ запустить сервер с сессионным соединением с базой данных в Django?

По мере того, как я разрабатываю бэкенд, я также разрабатываю фронтенд. Как вы уже, наверное, догадались, мне приходится выполнять некоторые REST-запросы на моем сервере.

Ну, для этого есть несколько решений. Я могу использовать моки на фронтенде или поддельный JSON-сервер . Однако у этого подхода есть некоторые недостатки:

  • Мне приходится переделывать то, что у меня есть на уже существующем бэкенд-сервере.
  • Разбираться с аутентификацией на поддельном JSON-сервере не очень удобно.
  • Мне придется написать много шаблонов, если я хочу перейти на подход мокинга и модульного тестирования.

Опять же, вся логика, которая мне нужна, уже существует в моем проекте Django, поэтому то, что мне нужно, это:

  1. Run a dev server.
  2. Set up a fresh new database.
  3. Provide some initial data. Some fake users, posts, whatever.
  4. Do my testing on my frontend project while the server runs.
  5. Hit the kill signal. (CTRL+C)
  6. Gracefully drop the database that I have created on step 2.
  7. 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.

Вернуться на верх