Как настроить тестовый сервер django при использовании пушки?

Я запускаю приложение в джанго с пушкой. Я пытаюсь использовать селен для тестирования своего приложения, но столкнулся с проблемой.

Мне нужно создать тестовый сервер, как это делается с djangos LiveServerTestCase который будет работать с gunicorn.

Есть ли у кого-нибудь идеи о том, как я могу это сделать?

note: может также кто-то подтвердить мне, что LiveServerTestCase выполняется как поток, а не процесс

2 Solutions collect form web for “Как настроить тестовый сервер django при использовании пушки?”

Я прочитал код. Взгляд на LiveServerTestCase для вдохновения имеет смысл, но, пытаясь что-то придумать, расширив или каким-то образом вызвав LiveServerTestCase он просит проблемы и увеличивает затраты на обслуживание.

Надежный способ запуска, который похож на то, что делает LiveServerTestCase , – это создать из unittest.TestCase класс тестового примера с настраиваемыми setUpClass и tearDownClass . Метод setUpClass :

  1. Устанавливает экземпляр приложения Django с настройками, подходящими для тестирования: база данных в местоположении, которая не будет мешать чему-либо еще, записывает журналы в соответствующее место и, если электронные письма отправляются во время обычных операций, с настройками электронной почты, t заставить ваших системных администраторов задушить вас и т. д.

    [По сути, это процедура развертывания. Поскольку мы хотим в конечном итоге развернуть наше приложение, процесс выше – это тот, который мы должны разработать в любом случае .]

  2. Загружайте любые необходимые инструменты в базу данных.

  3. Запуск экземпляра Gunicorn запускает этот экземпляр приложения Django, используя для этого обычные команды ОС.

tearDownClass :

  1. Закрывает экземпляр Gunicorn, снова используя обычные команды OS.

  2. Удаляет базу данных, созданную для тестирования, удаляет любые файлы журналов, которые могут быть созданы, и т. Д.

И между установкой и разрывом наши тесты свяжутся с приложением на порту, назначенным Gunicorn, и при необходимости загружают больше приборов, и т. Д.

Почему бы не попробовать использовать модифицированный LiveServerTestCase ?

  1. LiveServerTestCase включает в себя всю тестовую настройку в одном процессе: тесты, сервер WSGI и приложение Django. Gunicorn не предназначен для такой работы. Во-первых, он использует мастер-процесс и рабочие процессы.

  2. Если LiveServerTestCase изменен, чтобы каким-то образом запустить приложение Django во внешнем процессе, то из этого преимущества выйдет много преимуществ этого класса. LiveServerTestCase полагается на то, что он может просто изменять настройки или подключения к базам данных в своем пространстве процессов и что эти изменения переносятся на приложение Django, поскольку он живет в одном процессе. Если приложение находится в другом процессе, эти трюки не могут работать. Когда LiveServerTestCase изменен, чтобы позаботиться об этом, конечный результат близок к тому, что я изложил выше.

Дополнительно: Может ли кто-то получить Gunicorn и Django для запуска в том же процессе?

Я уверен, что кто-то может склеить их вместе, но подумайте о следующем. Это, безусловно, означало бы изменение основного кода Gunicorn, поскольку Gunicorn предназначен для использования мастерских и рабочих процессов. Тогда этот человек, создавший клей, будет нести ответственность за то, чтобы этот клей был обновлен, когда внутренности Гуникорна или Джанго меняются таким образом, что делает разрыв клея. В конце концов это требует больше работы, чем использование метода, изложенного в начале этого ответа.

Сверху моей головы вы можете попытаться переопределить LiveServerTestCase.setUpClass и вывести пушки, вместо LiveServerThread

  • Selenium webdriver с помощью switch_to_windows () и печать заголовка не печатает название.
  • Selenium WebDriver waitForElementPresent, когда Javascript обновляется
  • selenium как получить содержимое href в пределах определенного целевого класса
  • Python selenium не может нажать поле
  • Изменение агента пользователя для драйвера селена
  • Отключение файлов cookie в Webdriver для Chrome / Firefox
  • Запуск тестов Selenium RC в firefox в автономном режиме
  • Установите chrome.prefs с привязкой python для селена в chromedriver
  • Selenium send_keys не работает, если input type = "number"
  • Поиск элемента с явным ожиданием с использованием selenium webdriver в python
  • Установка тайм-аута загрузки страницы в Selenium Python binding
  • Python - лучший язык программирования в мире.