Подтвердить что ты не робот

Python - скрученные и единичные тесты

Я пишу модульные тесты для части приложения, которое работает как HTTP-сервер. Подход, который я пытался сделать, - это импортировать модуль, содержащий HTTP-сервер, запустить его. Затем модульные тесты будут использовать urllib2 для подключения, отправки данных и проверки ответа.

Наш HTTP-сервер использует Twisted. Одна из проблем заключается в том, что я просто не знаком с Twisted:)

Теперь я создаю экземпляр нашего HTTP-сервера и запустил его в методе setUp(), а затем остановил его в методе tearDown().

Проблема в том, что Twisted не похоже на это, и он будет запускать только один unit test. После первого реактора больше не запускается.

Я искал, искал и искал, и я просто не могу найти ответ, который имеет смысл.

Я принимаю неверный подход полностью или просто не вижу ничего очевидного?

4b9b3361

Ответ 2

Я считаю, что для модульного тестирования в Twisted вы должны использовать TwistedTrial (это основной компонент, т.е. поставляется с Twisted tarball в каталоге скрученных/пробных файлов). Тем не менее, поскольку URL, на который я указал, говорит, что в основном документ состоит в том, что он просматривает источник (включая источники различных проектов Twisted, поскольку они также тестируются с пробной версией).

Ответ 3

Как уже упоминалось, вы должны использовать Trial для модульных тестов в Twisted.

Вы также должны быть модульным тестированием снизу вверх - что означает "единица" в модульном тестировании. Перед тестированием вашего интерфейса проверьте свои данные и логику. Для интерфейса HTTP вы должны вызывать processGET, processPOST и т.д. С помощью mock-запроса, но вы должны делать это только после того, как вы проверили, что эти методы вызывают. Каждый тест должен предполагать, что модули, протестированные в других местах, работают в соответствии с конструкцией.

Если вы говорите по HTTP или вам нужен бегущий сервер или другое состояние, вы, вероятно, проводите тесты более высокого уровня, такие как функциональные или интеграционные тесты. Это не плохо, но вы можете перефразировать свой вопрос.

Ответ 4

Существует известная ошибка с Twisted (вероятно, не будет исправлена), где перезапуск реактора вызывает сбой.

Вот почему ваши модульные тесты не работают.

Помимо использования Trial, вы можете захотеть рассмотреть отдельные системы тестирования, которые будут разговаривать с вашим HTTP-сервером, как клиент.

  • Webdriver - API для управления сеансом браузера вокруг вашего сайта.
  • TestGen4Web - плагин Firefox, который записывает взаимодействия с сайтом и может воспроизводиться.