Django + nose

Май 18, 2009

Постепенно, привыкнув писать тесты на nose, я обнаружил очень интересную особенность django — у нее есть специальный механизм тестирования приложений, который запускается путем вызова manage.py test. Для того, чтобы тесты запустились они должны лежать либо в файле tests.py или в директории tests. Причем, тест-раннер сам создает базу данных sqllight на основе файла models.py в памяти и удалит ее после выполнения тестов, также есть «стаб» для веб-сервера, которым можно проверять ваши представления (views), посылая им POST или GET запросы. Это все замечательно, но тесты должны быть написаны стандартными средствами, то есть unittest.TestCase, но как и во всех «взрослых» питоновских фреймфорках все можно настраивать и я, порывшись в сети, обнаружил замечательный тест-раннер, который умеет гонять тесты, написанные с помощью nose, и можно даже настроить папку, в которой и будут лежать тесты.

Итак, вот отсюда скачиваем nose_runner.py и кладем ее в корень проекта, затем в файле settings.py прописываем строчку

TEST_RUNNER = ‘<application name>.nose_runner.run_tests’

в общем нужно написать так, чтобы питону было видно ;) . Далее создаем сам cmd-файл, где прописываем следующее:

python manage.py test — «<path to tests>»

Как бы все — можно запустить батник и посмотреть на его вывод, а можно содать дополнительный билдер к проекту, как я описывал здесь (что я и сделал), и теперь тесты гоняются на каждом билде автоматически. Единственное, что смущает — это то, что тесты хоть и приближены к реальным условиям, но все же не совсем — веб  сервер-то замокирован, так, что возможно понадобится еще пачка тестов, котрая проверит контрольные точки на реальном веб-сервере, чем-нибудь, напиример WindMill.

tags: ,
posted in Программирование by dmitko

 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org