Разница между 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.