Разница между django-webtest и селеном

Я читал о тестировании в джанго. Одна вещь, которая была рекомендована, - использование django-webtest для функционального тестирования. Я нашел достойную статью здесь, в которой рассказывается, как идти о функциональном тестировании в селене с помощью python. Но люди также рекомендовали расширение Ian Bicking WebTest djagno-webtest для использования для тестирования форм в django. Как тестирование с веб-тестированием и тестирование с селеном различаются в контексте форм джанго?

Итак, с точки зрения функционального тестирования:

Как django-webtest и селен идут бок о бок?

Нужно ли им обоим или кому-либо делать?

Ответ 1

Важная информация о Selenium заключается в том, что она в основном построена как серверно-агностическая среда тестирования. Не имеет значения, какая структура или серверная реализация используется для создания front-end, если она ведет себя так, как ожидалось. Кроме того, в то время как вы можете (и, когда это возможно, вам, вероятно, нужно) писать тесты вручную в Selenium, многие тесты записывают макросы кого-то, проходящего через движения, которые затем автоматически превращаются в код.

С другой стороны, django-webtest построен специально для работы на сайтах Django. Это на самом деле расширение, специфичное для Django для WebTest, которое не является Django-only, а WSGI-only (и, следовательно, Python-only). Из-за этого он может взаимодействовать с приложением с более высоким уровнем осведомленности о том, как все работает на сервере. Это может ускорить выполнение тестов, а также упростить запись более подробных и подробных тестов. Кроме того, в отличие от Selenium, ваши тесты не могут быть автоматически записаны в виде записанных макросов.

В противном случае эти два инструмента имеют общую цель и предназначены для тестирования тех же вещей. Тем не менее, я бы предложил выбрать один, а не использовать оба.

Ответ 2

Ключевое различие заключается в том, что селен запускает фактический браузер, а WebTest - к WSGI. Это приводит к следующим отличиям:

  • Вы не можете тестировать JS-код с помощью WebTest, так как запускать его нечем.
  • WebTest намного быстрее, так как он подключается к WSGI, это также означает меньший объем памяти
  • WebTest не требует фактического запуска сервера на порте, поэтому его немного легче вывести из строя
  • WebTest не проверяет различные проблемы, возникающие в реальных браузерах, например, определенные ошибки в браузере (cough.. internet explorer.. cough..)

Нижняя строка: PREFER использовать WebTest, если вы НЕ ДОЛЖНЫ использовать Selenium для вещей, которые не могут быть протестированы с помощью WebTest.