Модульные тесты для представления формы django - PullRequest
2 голосов
/ 07 марта 2012

Тестирование очистки формы легко проверить путем создания экземпляра объекта формы по словарю заведомо исправного или заведомо плохого. Связанную логику представления можно проверить, взяв те же самые диктовки и используя тестовый клиент.

Тем не менее, мы все еще остаемся с основной проблемой фактического элемента формы HTML. Что если я использовал неправильный метод? Или у меня есть опечатка в действии? Или я забыл CSRF_Token? Как я могу написать модульные тесты, которые фактически проверяют поведение, которое пользователь, вероятно, будет испытывать?

Мне действительно нужно использовать механизацию?

Или люди анализируют элемент формы, используя .get (url) и просматривая html-содержимое ответа? Есть ли более чистый способ сделать это?

Ответы [ 2 ]

1 голос
/ 07 марта 2012

Это относится не только к тестированию HTML в Django, но и к любому другому приложению, где вам нужно тестировать поведение HTML.

Вы можете использовать библиотеки, такие как запросы , чтобы проверить формы с точки зрения браузера, используя другой метод (GET / POST / etc).

Для более детального тестирования взаимодействия с пользователем вы можете использовать Selenium , но мне лично больше нравится Splinter . В Splinter вы создаете экземпляр, называемый browser, который вы можете использовать как настоящий браузер. Затем в браузере вы можете заполнить текстовые поля, нажимать кнопки и т. Д., А затем проверить поведение.

Вот фрагмент кода с сайта Splinter:

 from splinter.browser import Browser 
 browser = Browser() 
 # Visit URL 
 url = "http://www.google.com" 
 browser.visit(url) 
 browser.fill('q', "#cobrateam") 
 # Find and click the 'search' button 
 button = browser.find_by_css(".lsb") 
 # Interact with elements 
 button.click() 
 if browser.is_text_present("did not match any documents"): 
     print "nobody likes us =(" 
 else: 
     print "we're popular =)" 

Там откроется браузер, перейдите к Google, заполните поле q, нажмите кнопку поиска, а затем протестируйте результаты поиска. Как вы можете видеть, библиотека очень проста в использовании, и вы можете провести довольно сложное тестирование с ней.

0 голосов
/ 10 марта 2012

Это можно сделать с помощью LiveServerTestCase , который был добавлен в Django 1.4.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...