2012-03-06 4 views
2

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

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

Нужно ли мне механизировать?

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

+0

Тестирование сложного поведения - это не единичный тест, а интеграционный тест. См. Проект django-sane-testing, он инкапсулирует практически все возможные тестовые примеры. – yedpodtrzitko

+0

Ну, индивидуальный тест «Использует ли форма на странице при заполнении той же информацией, что и my_good_post, объект, равный my_good_post», является единицей, к моему образу мышления. Я бы хотел проверить это простое поведение в моем модульном наборе тестов. – jMyles

ответ

0

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

+0

Прохладный. Не знал, что они это добавили. – miki725

1

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

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

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

Вот фрагмент кода с отколовшейся веб-сайта:

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, заполнить поле д, нажмите кнопку поиска, а затем результаты теста поиска. Поскольку вы можете видеть, что библиотека очень проста в использовании, и вы можете провести с ней довольно сложное тестирование.

+0

Конечно, но это действительно интеграционный тест, поскольку он проверяет экземпляр экземпляра реального экземпляра приложения. Как это сделать при использовании тестовой среды django (и тестовой базы данных)? – jMyles

+0

действительно не соответствуют вашему вопросу, но если вы запустите тестовый сервер django, вы можете использовать эти библиотеки для проверки данных. это помогает? – miki725

Смежные вопросы